Es ist üblich, müssen Sie eine verlinkte Liste rückgängig zu machen, aber es kann schwierig sein, es richtig zu machen . Eine der einfachsten Lösungen ist es, durch die Schleife durchlaufen , die Umkehrung jeden Zeiger . Dieser Pseudocode zeigt, wie man diesen Prozess durchzuführen, während die Verfolgung der notwendigen Variablen . Der Pseudocode ist allgemein genug , dass Sie sollten in der Lage sein , um es in welcher Sprache Ihr Code ist in. Anleitung
1
Check für einfache Grenzfälle anzupassen. Wenn der Kopf Zeiger NULL ist, ist die Liste leer und keine Arbeit getan werden muss . Wenn der Kopf die nächste Zeiger ist null , es ist nur ein Element in der Liste , so Umkehr es tut nichts .
Wenn head = null dann returnif Kopf -> next = null dann wieder
2
initialisieren drei Zeiger : prev, aktuellen und nächsten . "Zurück " und " aktuelle" sollte an der Spitze der Liste Knoten verweisen. "Next" sollte an dem zweiten Knoten , indem man die Zeiger in den Kopf Knotenpunkt
Zeiger prev = Kopf ; . Zeiger current = Kopf ; Zeiger next = head -> next ;
Seite 3
Stellen Sie den Kopf Knotens nächste Zeiger auf null . Der Kopf Knoten der letzte Knoten in der Liste zu werden, so wird es keine Knoten , nachdem es sein .
Kopf -> next = null
4
Schleife durch die Liste der Umkehr Richtung der Zeiger . Die drei Zeiger initialisiert früher verwendet werden, um den Überblick über die aktuelle Position in der Liste zu halten.
Während nächste! = Null //A null nächste Zeiger bedeutet, dass wir das Ende des nächsten listcurrent = //Vorschuß erreicht die aktuelle pointernext = current -> next //Schieben Sie den nächsten pointercurrent -> next = prev //Point den aktuellen Knoten zum vorherigen Knoten , die Umkehr der linkprev = Strom //Schieben Sie den letzten pointerend während
5
Punkt der Kopf Variable in der Liste der neuen Kopf.
head = aktuelle