Lire une lise chainée simple à l'envers
Résolu
didy_gwatinik
Messages postés
358
Statut
Membre
-
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?
Configuration: Windows XP Firefox 3.0.3
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, elem1Liste *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)
-
Le plus simple me semblerait de la retourner d'abord, et de la lire après.
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
tu peux le faire en supprimant le dernier elements de la liste a chaque fois aussi
-
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 []
;;