inversion des noeuds dans une liste chainée
SVP, j'aimerais définir une fonction qui inverse les nœuds d'une liste chainée sans utiliser une liste intermédiaire. Par exemple : 5 =>8=>6=>18=>9=>NULL devient : 9 >18=>6=>8=>5=>NULL
Je suis complètement bloqué, svp. J'ai besoin de vous :
Voila le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| struct noeud ;
typedef noeud* Liste;
struct Personne
{
char nom[25];
int age ;
};
struct noeud
{
Personne liste_pers;
Liste suiv ;
}; |
La fonction :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| Liste inversion(Liste pers)
{
noeud* point = pers ,*dernier;
dernier=pers;
while ( dernier->suiv != NULL )
dernier = dernier -> suiv ;
while (point != dernier)
{
point->suiv=dernier->suiv;
dernier->suiv=point;
pers = pers->suiv ;
point=pers;
}
return pers ;
} |
… mais je ne sais pas : chaque fois que j'exécute, il me dit « le programme a cessé de fonctionner » !