|
|
|
|
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.
Voila le code ki me permet d'inserer des valeur en queue de chaine, et de les afficherdu debut à la fin. Pouvez vous m'aider a les afficher de la fin de la chine jusqu'au debut merci.
#include <stdio.h>
#include <stdlib.h>
typedef struct liste
{
struct liste *suivant;
struct liste *precedent;
int valeur;
}LISTE;
void affichage (LISTE *fin)
{
LISTE *p;
p=fin;
while (p != NULL)
{
printf ("%d\n", p->valeur);
p = p->suivant;
}
}
LISTE *insertion (int valeur, LISTE *p)
{
LISTE *nouveau;
p->precedent = p->suivant;
nouveau = malloc(sizeof(LISTE));
// printf("%d,%d",p->precedent,p->suivant);
p->suivant = nouveau;
nouveau->suivant=NULL;
nouveau->valeur = valeur;
return nouveau;
}
int main ()
{
int i, n;
LISTE *tete, *p;
printf ("Taille de la liste:");
scanf ("%d", &n);
p = (LISTE*) &tete;
for (i=1; i<=n; i++)
{
p = insertion (i*i, p);
}
affichage(tete);
}
|
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 |
#include <stdio.h> #include <stdlib.h> typedef struct liste
|
Répondre à rym
|