Inverser une liste - Ada - Programmation
Marsh Posté le 27-05-2009 à 17:45:38
Code :
|
Pour l'explication, aller voir les règles de la catégorie, section [0D]
Marsh Posté le 27-05-2009 à 18:29:08
J'étais au courant de la règle [0D], mais pour le coup, j'y ai bien réfléchi, et là je ne vois pas comment m'y prendre. J'ai défini une liste, pour ça il n'y a pas de problèmes:
Code :
|
Je n'ai pas tellement d'idée. Il faudrait parcourir la liste jusqu'au dernier élément, rattacher ce-dernier en début de liste puis... je ne sais pas!
Marsh Posté le 27-05-2009 à 18:32:34
bah non, tu traverses ta liste en ayant 2 éléments à chaque fois et tu inverses le lien entre les deux.
Marsh Posté le 27-05-2009 à 18:35:07
Citation : tu traverses ta liste en ayant 2 éléments à chaque fois |
Je ne saisis pas l'idée.. Comment ça deux éléments? Comment fais-tu ça?
Marsh Posté le 27-05-2009 à 18:45:07
En suivant ton pointeur vers l'élément suivant de la liste
Marsh Posté le 27-05-2009 à 18:50:26
Je suis désolé, mais si c'est évident pour toi, c'est loin d'être le cas me concernant.
J'essaye de me représenter la chose, en vain.. Peut-être serait-ce plus explicite avec un exemple "concret"?
Marsh Posté le 27-05-2009 à 19:17:47
Bah... tu as ta liste chainée
O->O->O->O->O-> |
Tu sélectionnes le premier élément, et tu gardes un lien sur le 2e
|
Tu inverses le lien du premier élément (tu le fais pointer sur son prédécesseur, qui est "rien du tout" )
|
Puis tu avances le tout d'un cran, en gardant une référence sur ton 1er élément
|
Tu inverses le lien du second élément
|
et tu recommences la séquence (avancer -> inverser) jusqu'à arriver au dernier élément de ta liste
Marsh Posté le 27-05-2009 à 19:25:25
Ok, merci pour ces illustrations, ça clarifie déjà pas mal les choses!
Par contre, comment, dans le langage, "garde-t-on un lien sur le deuxième [élément]" (syntaxe?)? En fait, il faudrait créer deux listes auxiliaires?
Marsh Posté le 27-05-2009 à 19:32:44
Non, juste une référence.
Marsh Posté le 27-05-2009 à 16:58:29
Bonjour,
Je cherche à réaliser une procédure qui permettrait d'inverser les éléments d'une liste chaînée, c'est-à-dire que les éléments de tête deviendraient les éléments de queue. Je ne vois pas comment m'y prendre, pouvez-vous me montrer en m'expliquant svp?
Merci d'avance.