Rechercher : dans
Par :

Lire une lise chainée simple à l'envers

Dernière réponse le 25 oct 2008 à 22:51:07 didy_gwatinik, le 25 oct 2008 à 15:23:12 
 Signaler ce message aux modérateurs

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?

Configuration: Windows XP
Firefox 3.0.3

Meilleures réponses pour « Lire une lise chainée simple à l'envers » dans :
Liste simplement chaînée VoirLISTES SIMPLEMENT CHAINÉES Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la liste IV. Opérations sur les listes chaînées A. Initialisation B. Insertion d'un élément dans la liste 1. Insertion...
Liste doublement chaînée VoirLISTES DOUBLEMENT CHAINÉES Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la liste IV. Opérations sur les listes doublement chaînées A. Initialisation B. Insertion d'un élément dans la liste 1....
Listes déroulantes simples avec Excel VoirDans votre tableau, vous souhaitez insérer un texte ou une valeur choisi dans une liste (déroulante). vous créez votre liste, ligne aprés ligne, sur votre feuille en cours ou sur une autre feuille du classeur en cours. vous la nommez : INSERTION...
Langage C - Les listes chaînées VoirLa notion de structure autoréferrentielle Une structure autoréferrentielle (parfois appelée structure récursive) correspond à une structure dont au moins un des champs contient un pointeur vers une structure de même type. De cette façon on crée...

1

LeYaude, le 25 oct 2008 à 15:25:32

Le plus simple me semblerait de la retourner d'abord, et de la lire après.

Répondre à LeYaude

2

didy_gwatinik, le 25 oct 2008 à 15:27:00

Mais comment faire, je ne vois pas justement c'est l'accès à la "case" précédente qui me pose un problème

Répondre à didy_gwatinik

3

bzkr7, le 25 oct 2008 à 15:27:45

Je ne crois pas que tu pouras ..........

Répondre à bzkr7

4

didy_gwatinik, le 25 oct 2008 à 15:29:35

Il faut absolument que je passe par une liste doublement chainée?

Répondre à didy_gwatinik

5

mype, le 25 oct 2008 à 15:42:52

Tu peux le faire en supprimant le dernier elements de la liste a chaque fois aussi

Répondre à mype

6

didy_gwatinik, le 25 oct 2008 à 15:43:52

J'y ai également pensé mais comment faire pour récupérer la case précédente?

Répondre à didy_gwatinik

8

LeYaude, le 25 oct 2008 à 15:45:41

Récupérer le dernier terme d'une liste chainée simple requiert de la parcourir entièrement, autant donc la retourner une bonne fois pour toutes ! (cf plus bas)

Répondre à LeYaude

7

LeYaude, le 25 oct 2008 à 15:44:12

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 []
;;

Répondre à LeYaude

9

didy_gwatinik, le 25 oct 2008 à 15:46:37

Ah brillante idée je vais essayer ça toute de suite!!

Répondre à didy_gwatinik

10

LeYaude, le 25 oct 2008 à 15:53:56

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)

Répondre à LeYaude

11

didy_gwatinik, le 25 oct 2008 à 20:13:55

J'ai essayé ça marche parfaitement bien! Merci beaucoup beaucoup!!!

Répondre à didy_gwatinik

12

 lami20j, le 25 oct 2008 à 22:51:07

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

Liste *p;
Liste *L1;
Liste *L2;

for(p=L1;p!=NULL;p=p->suivant)
  InsertionEnTete(L2,p->donnee);
106485010510997108

Répondre à lami20j
Collection CommentÇaMarche.net