Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2713 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

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
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.


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
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]


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
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


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
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.


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
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-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)