Il est courant de devoir inverser une liste chaînée , mais il peut être difficile de le faire correctement . Une des solutions les plus simples consiste à parcourir la boucle , en inversant chaque pointeur. Ce pseudo montre comment effectuer ce processus tout en gardant une trace des variables nécessaires . Le pseudo est assez générique que vous devriez être en mesure de l'adapter à la langue que votre code est po Instructions
1
Vérifier cas de pointe simples. Si le pointeur de tête est nul, la liste est vide et aucun travail qui doit être fait . Si prochain pointeur de la tête est nulle , il n'y a qu'un seul élément dans la liste, inversant il ne fait rien .
Si la tête = null alors returnif tête - > suivant = null puis retour
2
Initialisation trois pointeurs : prev , actuelles et futures . « Précédent » et «courant» doivent pointer sur le noeud de tête de la liste. "Suivant" doit pointer au deuxième noeud en regardant le pointeur dans le noeud de tête
pointeur prev = tête ; . Pointeur courant = tête ; pointeur suivant = tête - > suivant ;
Hôtels 3
Situé à côté du pointeur de la tête noeud à null. Le nœud de tête deviendra le dernier nœud dans la liste, il y aura donc pas de nœuds après.
Tête - > suivant = null
4
boucle dans la liste inverser la direction des pointeurs . Les trois pointeurs initialisés précédemment sont utilisés pour garder une trace de la position actuelle dans la liste.
Tandis prochaine! = Null //Un pointeur suivant nulle signifie que nous avons atteint la fin de la prochaine listcurrent = //Advance le pointernext = courant -> next //avance la prochaine pointercurrent - > suivant = prev //point le nœud actuel au nœud précédent , renversant la linkprev = courant //Faire progresser le dernier pointerend tout
5
point de la variable de la tête à nouveau la tête de la liste. tête de
= actuel