Liste Chainée , probleme d'execution
Medreda23
Messages postés
3
Statut
Membre
-
Medreda23 Messages postés 3 Statut Membre -
Medreda23 Messages postés 3 Statut Membre -
Bonjour tlm
je suis un programmeur debutant en c , sur code blocks notament
je viens d'essayer un programme supposé d'ajouter un element à une liste triée dans sa place, pas d'erreurs ni de warnings le programme ne veut pas s'executer
je suis un programmeur debutant en c , sur code blocks notament
je viens d'essayer un programme supposé d'ajouter un element à une liste triée dans sa place, pas d'erreurs ni de warnings le programme ne veut pas s'executer
#include<stdio.h>
#include<stdlib.h>
struct Elem
{int x;
struct Elem *suiv;
};
typedef struct Elem *liste;
//************************
liste Ajout_position(liste L,int a)
{liste N,p=L,q;
N=(liste)malloc(1*sizeof(liste));
if(N!=NULL)
{ N->x=a;
if((L->x)>=a || L==NULL)
{
N->suiv=L; L=N;
}
else
{
while((p->x)<=a && p!=NULL)
{
q=p;
p=p->suiv;
}
q->suiv=N;
N->suiv=p;
}
}
return L;
}
void Afficher(liste L)
{liste p=L;
if(L==NULL)
{
printf("impossible de faire l'ajout");
}
else
{
while(p!=NULL)
{
printf("%d->",p->x); p=p->suiv;
}
printf("NULL\n");
}
}
main()
{liste L=NULL;
L=Ajout_position(L,3);Afficher(L);
L=Ajout_position(L,4);Afficher(L);
L=Ajout_position(L,6);Afficher(L);
L=Ajout_position(L,65);Afficher(L);
L=Ajout_position(L,2);Afficher(L);
L=Ajout_position(L,1);Afficher(L);
L=Ajout_position(L,0);Afficher(L);
}
A voir également:
- Liste Chainée , probleme d'execution
- Liste déroulante excel - Guide
- Liste code ascii - Guide
- Liste déroulante en cascade - Guide
- Site dangereux liste - Guide
- Voir liste d'amis facebook - Guide
2 réponses
Bonjour,
J'ai pas tout vu, mais déjà :
main()
Le bon prototype du main() est : int main(void)
if((L->x)>=a || L==NULL)
Il faut mettre L==NULL en première position sinon plantage.
while(p->x <= a && p!=NULL)
Il faut mettre p!=NULL en première position.
<ital>N=(liste)malloc(1*sizeof(liste));</liste>
Plutôt sizeof(struct Elem) ou *N
Pour info, le cast est superflu=> N=malloc(sizeof(struct Elem));
Et enfin n'oublie pas return 0; en fin du main pour signaler que tout s'est bien déroulé.
Corrige déjà tout ça. Recompile et resteste.
J'ai pas tout vu, mais déjà :
main()
Le bon prototype du main() est : int main(void)
if((L->x)>=a || L==NULL)
Il faut mettre L==NULL en première position sinon plantage.
while(p->x <= a && p!=NULL)
Il faut mettre p!=NULL en première position.
<ital>N=(liste)malloc(1*sizeof(liste));</liste>
Plutôt sizeof(struct Elem) ou *N
Pour info, le cast est superflu=> N=malloc(sizeof(struct Elem));
Et enfin n'oublie pas return 0; en fin du main pour signaler que tout s'est bien déroulé.
Corrige déjà tout ça. Recompile et resteste.