Liste chainées

Fermé
didy_gwatinik Messages postés 352 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 30 mars 2010 - 25 oct. 2008 à 13:36
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 - 25 oct. 2008 à 21:00
Bonjour,
Est-il possible de parcourir un liste chainée simple à l'envers pour afficher les saisies dans l'ordre inverse? Je vosi pas trop comment je pourrai faire?
Sinon je pense à faire une copie de ma liste chainée et de supprimer au fur et à mesure chaue partie de la liste jusqu'à ce que j'arrive au début, mais c'est un peu "tirer par les cheveux" d'en arriver jusque là, non? et je pense que j'aurai encore le même soucis pour arriver au pointeur précédent.
A voir également:

1 réponse

Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 329
25 oct. 2008 à 21:00
Bonsoir,
Le principe de la liste chainée, c'est d'avoir que chaque maillon a deux attributs :
- l'élément qu'il contient (les données)
- un pointeur vers l'élément suivant de la chaîne

Autrement dit, une liste chainée ne peut être parcourue que dans un seul sens.
Pour parcourir une liste chainée en sens inverse (autrement dit, pour trouver l'élément précédent chaque élément), l'algorithme a une complexité en O(n²).

L'idéal dans ton cas est donc d'utiliser une liste doublement chainée, qui te permet un parcours dans les deux sens (en gardant une complexité en O(n) pour le parcours). Pour cela, chaque maillon a trois attributs :
- l'élément qu'il contient (les données)
- un pointeur vers l'élément suivant de la chaine
- un pointeur vers l'élément précédent de la chaine.
Par contre il va sans doute te falloir implémenter cette structure car elle n'existe pas dans la plupart des langages de programmation (quoiqu'en cherchant bien peut-être que tu peux la trouver dans des bibliothèques externes).

Bien cordialement,
1