petit probleme sur liste chainée simple - C - Programmation
Marsh Posté le 07-08-2003 à 19:28:22
nouv est inséré entre a et a->suiv (appelons le b)
Au début, on a "a --> b", au final, on a "a --> nouv --> b". Donc, il faut bien modifier la valeur de a->suiv, qui pointait vers b et qui doit maintenant pointer vers nouv.
(on notera que ca marche aussi si a est le dernier élément de la liste, avec a->suiv == NULL)
Marsh Posté le 07-08-2003 à 19:47:07
mrBebert a écrit : nouv est inséré entre a et a->suiv (appelons le b) |
Ah oki je comprend maintenant.Avec un schéma et des lettres pour tout,ça va tout de suite mieux
Merci beaucoup
Marsh Posté le 07-08-2003 à 19:25:08
Dans une liste chainée simple, on a :
un pointeur "*deb" vers début de liste.
"*nouv"->pointeur vers nouveau élément.
"*a"->pointeur vers element courant
dans le cas ou le nouveau element à insérer dans la liste est >= au 1er élément:
et dans le cas précis ou dans le for, la condition de sortie est validée tout de suite :
for(a=deb;a->suiv!=NULL && strcmp(a->suiv->name,nouv->name)>0;a=a->suiv);
nouv->suiv=a->suiv; //Là je comprend:le pointeur suivant de nouveau reçoit l'adresse de l'élément qui va le suivre.
a->suiv=nouv; //Mais là je comprend pas: on dirait que ce qui suit nouveau va prendre l'adresse de nouveau ???
Si qq 1 peut m'aider ça serait sympa