Liste liée: Ceci est une liste liée que nous voulons inverser.
Après la liste liée inversée: Ce qui précède sera le résultat après avoir inversé la liste liée ci-dessus.
Dans l'exemple ci-dessus, nous pouvons voir que le nœud de tête et le nœud de queue modifient leurs positions lorsque nous inversons la liste liée. Le nœud de tête, qui est maintenant un nœud de queue, pointe vers le nœud nul car il s'agit maintenant d'un nœud de queue.
Étapes d'algorithme
Nous allons expliquer la liste liée inversée en utilisant un formulaire pictural pour le rendre plus facile à comprendre. Alors commençons par l'exemple.
Ci-dessous est une liste liée que nous voulons inverser.
Étape 1. Le nœud de couleur verte est un nœud de tête, qui pointe vers le premier nœud du démarrage.
Étape 2. Dans l'étape suivante, nous traverserons toute la liste liée jusqu'à ce que nous n'obtenons pas le pointeur nul à côté du nœud d'en-tête. Pour cela, nous allons attribuer au nœud suivant un nom temporaire, comme indiqué dans le diagramme ci-dessous.
Étape 3. Comme nous avons un nouveau nœud de référence nommé «Temporary», qui peut nous aider à traverser toute la liste liée jusqu'à ce que nous n'obtenions pas le pointeur nul, afin que nous puissions définir le lien suivant du nœud d'en-tête comme nul, ce qui n'affectera pas le lien Liste comme indiqué ci-dessous dans le diagramme. Le pointeur nul à côté du nœud actuel est appelé le nœud précédent.
Étape 4. Maintenant, nous déplaçons le nœud temporaire vers le nœud suivant et le nœud actuel vers le nœud temporaire précédent. Alors maintenant, nous sommes passés au nœud suivant. Nous modifions également le nœud précédent de NULL au nœud précédent du nœud actuel. Alors maintenant, le nœud temporaire s'occupera de toutes les traversées jusqu'au pointeur nul afin que nous puissions définir le lien du nœud actuel au nœud précédent, et maintenant il pointe vers le nœud précédent, comme indiqué dans le diagramme ci-dessous.
Nous suivons donc les mêmes étapes et, enfin, nous obtiendrons une liste liée inversée.
Étape 5.
Étape 6.
Étape 7.
Étape 8.
Étape 9.
Étape 10.
Étape 11.
Étape 12.
Étape 13.
Étape 14. À cette étape, notre liste liée a inversé.
Programme C ++ pour inverser une liste liée
#inclure
Utilisation de Namespace Std;
// Méthode pour créer le nœud
nœud struct
INT VALEUR;
nœud * nextNodePtr;
* nodeObject;
void CreateLlinkEdList (int n);
void reverselinkedList (Node ** nodeObject);
void disposer ();
int main()
int n, valeur, élément;
couter<<"How many nodes you want to create =>: ";
cin >> n;
CreateLinkedList (n);
couter<<"\nInformation in the linked list: \n";
afficher();
couter<<"\nLinked list after reversed\n";
reverselinkedList (& nodeObject);
afficher();
retour 0;
// Cette méthode créera la liste liée
void createLlinkedList (int n)
Node de structure * FrontNode, * tempnode;
INT VALEUR, I;
NodeObject = (struct nœud *) malloc (sizeof (struct nœud));
if (nodeObject == null)
couter<<" Not enough to assing memory";
autre
couter<<"Please enter the info of node 1 (number only): ";
cin >> valeur;
nodeObject-> value = value;
nodeObject-> nextNodePtr = null;
tempnode = nodeObject;
pour (i = 2; i<=n; i++)
FrontNode = (nœud struct *) malloc (sizeof (nœud struct));
// quand aucun nœud dans la liste liée
if (frontnode == null)
couter<<"Memory can not be allocated";
casser;
autre
couter<<"Please enter the info of node "<cin >> valeur;
FrontNode-> valeur = valeur;
FrontNode-> nextNodePtr = null;
tempnode-> nextNodePtr = FrontNode;
tempnode = tempnode-> nextNodePtr;
void reverselinkedList (node ** nodeObject)
struct nœud * tempnode = null;
struct nœud * PREVERNODE = NULL;
struct node * currentNode = (* nodeObject);
Pendant (courant de courant != Null)
tempnode = currentNode-> nextNodePtr;
currentNode-> nextNodePtr = PREVERNODE;
PREBERNODE = COURTHNODE;
currentNode = tempNode;
(* NodeObject) = PREVERNODE;
void display ()
nœud struct * tempnode;
if (nodeObject == null)
couter<<"Linkedlist is empty";
autre
tempnode = nodeObject;
pendant (tempnode != Null)
couter<valeur<<"\t";
tempnode = tempnode-> nextNodePtr;
couter <
Sortir
Combien de nœuds souhaitez-vous créer =>: 6Conclusion
Cet article de Linuxhint a examiné comment inverser une liste liée en C++. Il existe d'autres méthodes pour inverser une liste liée, mais il s'agit d'une méthode très courante pour inverser une liste liée. C'est à vous de décider comment vous souhaitez résoudre vos problèmes, mais généralement la fonction de liste liée inverse devrait être une boucle simple avec des échanges de pointeurs.