Liste chainé en C:URGENT

body2003 Messages postés 1 Statut Membre -  
adso Messages postés 14 Statut Membre -
ma fonction d'ajout d'un element a une liste chainé est:
void SAISIE(struct liste *l)
{
struct personne *nouveau;
struct personne *p;

nouveau=(struct personne *)malloc(sizeof(struct personne));
if(nouveau==NULL)
{
printf("ajout impossible!");
exit(1);
}
printf(" - Entrez le nom :");
scanf("%s",nouveau->nom);
nouveau->suivant=NULL;
if(l->premier==NULL)
{
l->premier=nouveau;
}
else
{

p=l->premier;
while(p!=NULL)
{
p=p->suivant;
}
p=nouveau;
}
}

aprés que j'ajoute plusieurs elements je constate que seulementle premier element qui est ajouté.
where is the problem?

1 réponse

  1. adso Messages postés 14 Statut Membre 3
     
    Si je me trompe pas avec while(p!=NULL) tu veux tester si tu es sur la derniere entree de ta liste, dans ce cas, je crois que c'est while(p->suivant!=NULL) qu'il faudrait mettre.
    --
    Adso
    0
    1. adso Messages postés 14 Statut Membre 3
       
      [pfff j'oublie la fin de mon explication ... ]
      Ensuite en sortie de boucle while, tu mets p->suivant=nouveau
      --
      Adso
      0