Lire une lise chainée simple à l'envers
Résolu
didy_gwatinik
Messages postés
352
Date d'inscription
Statut
Membre
Dernière intervention
-
mrism000 Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
mrism000 Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Est-il possible de parcourir un liste chainée simple à l'envers pour afficher les saisies dans l'ordre inverse? Je vois pas trop comment je pourrai faire?
Est-il possible de parcourir un liste chainée simple à l'envers pour afficher les saisies dans l'ordre inverse? Je vois pas trop comment je pourrai faire?
A voir également:
- Lire une lise chainée simple à l'envers
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Ecran a l'envers - Guide
- Lire epub - Guide
- Slash à l'envers ✓ - Forum Clavier
- 3 à l'envers ✓ - Forum Windows
6 réponses
Salut,
Pour lire une liste simplement chaînée à l'envers tu crées une fonction InsertionEnTete (donc chaque nouveau élément sera insérer en tête de liste)
Liste initiale : elem1, elem2,...................,elemN
Insertion de 1er élément en tête - La nouvelle liste sera elem1
Insertion de 2ème élément en tête - La nouvelle liste sera elem2, elem1
Insertion de Nième élément en tête - La nouvelle liste sera elemN ..................elem2, elem1
Pour lire une liste simplement chaînée à l'envers tu crées une fonction InsertionEnTete (donc chaque nouveau élément sera insérer en tête de liste)
Liste initiale : elem1, elem2,...................,elemN
Insertion de 1er élément en tête - La nouvelle liste sera elem1
Insertion de 2ème élément en tête - La nouvelle liste sera elem2, elem1
Insertion de Nième élément en tête - La nouvelle liste sera elemN ..................elem2, elem1
Liste *p; Liste *L1; Liste *L2; for(p=L1;p!=NULL;p=p->suivant) InsertionEnTete(L2,p->donnee);
Ne connaissant pas le C et donc n'ayant aucune idée de l'implémentation des liste chainées dans ce langage, ni si les listes chainées doubles sont faciles à utiliser (ça semblerait assez pratique ici en même temps)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Non, pour retourner une liste, il suffit de la parcourir récursivement, et de stocker la tête à la queue d'une autre. Je ne connais pas la synthaxe en C, mais en Caml, ça donnerait ça (sachant que t::q représente la liste chainée dont la tête est t, et la queue est q, que [] représente la liste vide, hd (l) la tête de l et tl(l) la queue de l) :
let miroir liste =
let rec aux l1 l2 =
if l1 = [] then l2
else miroir tl (l1) (hd(l1)) :: l2
in
aux liste []
;;
let miroir liste =
let rec aux l1 l2 =
if l1 = [] then l2
else miroir tl (l1) (hd(l1)) :: l2
in
aux liste []
;;