Listes doublement chaînées

Fermé
meryema92 Messages postés 30 Date d'inscription jeudi 27 décembre 2012 Statut Membre Dernière intervention 11 août 2016 - 27 déc. 2012 à 00:48
meryema92 Messages postés 30 Date d'inscription jeudi 27 décembre 2012 Statut Membre Dernière intervention 11 août 2016 - 27 déc. 2012 à 15:21
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

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 30 Date d'inscription jeudi 27 décembre 2012 Statut Membre Dernière intervention 11 août 2016 1
27 déc. 2012 à 15:21
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