Listes doublement chaînées

meryema92 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   -  
meryema92 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
en fait j'ai trouvé un exercice sur internet qui demandait d'inverser une liste doublement chaînée en se servant des adresses et non pas des contenus des cellules
voici le programme que j'ai proposé mais je ne sais pourquoi ça ne marche pas quand je fais l'exécution du programme . j'ai vraiment besoin d'aide


#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct circulaire{
int contenu;
circulaire *pcd;
circulaire *suiv;
};
void inverse(circulaire *d)
{
int m=0; circulaire *c;
while(d!=NULL)
{m++;}
while(d!=NULL)
{d=d->suiv;
}
if(d==NULL)
{ c=d;
int i=0;
while(i!=m)
{
c->suiv=d->pcd;
d->pcd=(d->pcd)->pcd;
c=c->suiv;
printf("%d\t",c->contenu);
i++;
}
}
}
main()
{
circulaire *p,*d;
int i;
for(i=0;i<8;i++)
{
p=(circulaire*) malloc(sizeof(circulaire));
p->contenu=i;
p->suiv=NULL;
p->pcd=(p->pcd)->suiv;
printf("%d\t",p->contenu);
}
inverse(d);
getch();
}

2 réponses

swed
 
Bonjour,

Tu as du te perdre quelquepart...
Il me paraît évident que cette boucle n'a aucun sens, qu'as tu voulu faire ?
while(d!=NULL)
{m++;}

Je suppose que pour inverser la liste doublement chaînée, il suffit de la parcourir en inversant le précédent et suivant de chaque cellule. Non ?
0
meryema92 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   1
 
au fait je voulais compter le nombre de cellule dont je disposait par cette boucle mais ça me parait logique ce que vous dîtes merci
0