petit probleme sur liste chainée simple

petit probleme sur liste chainée simple - C - Programmation

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 :hello:

Reply

Marsh Posté le 07-08-2003 à 19:25:08   

Reply

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)


Message édité par mrbebert le 07-08-2003 à 19:29:18
Reply

Marsh Posté le 07-08-2003 à 19:47:07    

mrBebert a écrit :

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)


 
Ah oki je comprend maintenant.Avec un schéma et des lettres pour tout,ça va tout de suite mieux  :sol:  
Merci beaucoup :hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed