Liste doublement chainée en C

Fermé
Jarod - 15 nov. 2004 à 00:45
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 15 déc. 2007 à 17:26
Bonjour à tous,
j'ai défini une liste chainée bidirectionnelle avc

typedef struct liste
{
struct liste *suivant;
struct liste *precedent;
int valeur;
}LISTE;

g une fonction insertion() ki insert des valeurs au fur et a mesure ds ma liste chainée, avc une allocation dynamique.

Puis apres je voudrai afficher ma liste ds l'ordre inverse(c'est a dire afficher la derniere valeur entrer jusqu'a la premiere) en me servant de *precedent. mais je n'y arrive pas.

Pouvez-vous m'aider svp à écrire la fonction insertion et d'affichage afin de permettre d'afficher dans l'ordre inverse?

Merci d'avance.
Cordialement.

5 réponses

maily Messages postés 7556 Date d'inscription lundi 26 juin 2000 Statut Contributeur Dernière intervention 23 juin 2023 453
15 nov. 2004 à 21:51
Je dirais qu'il faut parcourir 2 fois la liste chainée... ce n'est pas très pratique, mais bon, il n'y a que ça à mon avis!

void affichageFin (LISTE *fin) 
{ 
    LISTE *p; 
    LISTE * q;
    p=fin; 

    while (p != NULL) 
    { 
        q=p;
        p = p->suivant; 
    } 
    while(q!=NULL){
       p=q;
       q=q->precedent;
       printf("%d\n", p->valeur);
   }
} 


Maily :-))))
Boumj'chtattrape
3