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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 » !