Pourtant ce n'est pas ce qu'il y a de plus dur ... le principe est tout bete :
[] -> [] -> [] -> [] -> 0 (oui c'est une liste chainée !!!)
C'est faisable en parcourant la chaine en gardant en memoire 2 choses essentielles :
- l'adresse precedente
- l'adresse suivante
Que l'on inverse tout simplement a chaque maillon de la chaine !
ex: 'prec' l'adresse du maillon precedent et 'next' l'adresse du maillon suivant
on cherche a obtenir ceci : 0 <- [] <- [] <- [] <- []
donc a faire pointer les 'next' vers le maillon precedant, en faisant pointer le premier maillon sur 0
donc on commence avec prec = 0 et next = l'adresse du 2eme maillon
si on fait pointer le premier maillon sur prec on obtient ceci :
0 <- [] (rien) [] -> [] -> []-> 0
avec prec = l'adresse du premier maillon, et next l'adresse du deuxieme
on peut alors aller sur le deuxieme maillon et faire l'operation identique ce qui nous donne
0 <- [] <- [] (rien) [] -> [] -> 0 avec prec =
l'adresse du deuxieme maillon et next l'adresse du 3eme ...
il suffit alors de repeter cette operation jusqu'a ce que next == 0, ce
qui veut dire que l'on est arrive a l'ancienne fin de notre liste
chainee ...
Je pense avoir ete clair ...
|