Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1505 connectés 

  FORUM HardWare.fr
  Programmation
  Ada

  Inverser une liste

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Inverser une liste

n°1888660
dj_titeuf
Posté le 27-05-2009 à 16:58:29  profilanswer
 

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.

mood
Publicité
Posté le 27-05-2009 à 16:58:29  profilanswer
 

n°1888680
masklinn
í dag viðrar vel til loftárása
Posté le 27-05-2009 à 17:45:38  profilanswer
 

Code :
  1. >>> l = range(5)
  2. >>> l
  3. [0, 1, 2, 3, 4]
  4. >>> l.reverse()
  5. >>> l
  6. [4, 3, 2, 1, 0]
  7. >>>


Pour l'explication, aller voir les règles de la catégorie, section [0D]


Message édité par masklinn le 27-05-2009 à 17:46:21

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1888695
dj_titeuf
Posté le 27-05-2009 à 18:29:08  profilanswer
 

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 :
  1. type Element;
  2. type Liste is access Element;
  3. type Element is record
  4.   Info: Integer;
  5.   Suiv: Liste;
  6. end record;


 
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! :??:

n°1888697
masklinn
í dag viðrar vel til loftárása
Posté le 27-05-2009 à 18:32:34  profilanswer
 

bah non, tu traverses ta liste en ayant 2 éléments à chaque fois et tu inverses le lien entre les deux.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1888700
dj_titeuf
Posté le 27-05-2009 à 18:35:07  profilanswer
 

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?


Message édité par dj_titeuf le 27-05-2009 à 18:35:27
n°1888706
masklinn
í dag viðrar vel til loftárása
Posté le 27-05-2009 à 18:45:07  profilanswer
 

En suivant ton pointeur vers l'élément suivant de la liste [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1888707
dj_titeuf
Posté le 27-05-2009 à 18:50:26  profilanswer
 

Je suis désolé, mais si c'est évident pour toi, c'est loin d'être le cas me concernant. :sweat:
J'essaye de me représenter la chose, en vain..  :(  Peut-être serait-ce plus explicite avec un exemple "concret"?

n°1888709
masklinn
í dag viðrar vel til loftárása
Posté le 27-05-2009 à 19:17:47  profilanswer
 

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


||
\/
 O->O->O->O->O->
   /\
   ||


Tu inverses le lien du premier élément (tu le fais pointer sur son prédécesseur, qui est "rien du tout" )


 ||
 \/
<-O  O->O->O->O->
    /\
    ||


Puis tu avances le tout d'un cran, en gardant une référence sur ton 1er élément


    ||
    \/
<-O  O->O->O->O->
  /\   /\
  ||   ||


Tu inverses le lien du second élément


    ||
    \/
<-O<-O  O->O->O->
  /\   /\
  ||   ||


et tu recommences la séquence (avancer -> inverser) jusqu'à arriver au dernier élément de ta liste


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1888714
dj_titeuf
Posté le 27-05-2009 à 19:25:25  profilanswer
 

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?

n°1888717
masklinn
í dag viðrar vel til loftárása
Posté le 27-05-2009 à 19:32:44  profilanswer
 

Non, juste une référence.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
mood
Publicité
Posté le 27-05-2009 à 19:32:44  profilanswer
 

n°1888722
dj_titeuf
Posté le 27-05-2009 à 19:53:40  profilanswer
 

:heink:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Ada

  Inverser une liste

 

Sujets relatifs
Liste déroulante récalcitrante (classique ?)reporting service matrix liste ou autre
Liste déroulanteliste déroulante + tableau
Calcul longueur d'une liste à liens multiplesRecherche rapide de liste
liste déroulante(option par défaut)encodage liste csv
liste d'objets remplie manuellementpbm pour inverser une liste en prolog
Plus de sujets relatifs à : Inverser une liste


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR