Visuelle Erklärung Leitung notwendig, für die Umkehrung der Verlinkten Liste datastructure-code?
Habe ich folgende Stück Programmcode für die Umkehrung der verlinkten Liste. Ich bin immer verwirrt in der while-Schleife, und so würde es sicherlich zu schätzen wissen, wenn jemand kann geben Sie eine visuelle Erklärung, wie es eigentlich funktioniert.
static void Reverse (struct node** headRef)
{
struct node* result = NULL;
struct node* current = *headref;
struct node* next;
while(current != NULL)
{
next = current->next;
current->next = result;
result = current;
current = next;
}
*headRef = result;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
OK, hier ist mein Versuch zu machen, Walja die Antwort noch klarer (obwohl ich dachte, es war ziemlich gut schon):
Sagen, wir haben diese Liste:
Wir starten mit dem ersten Knoten
a
enthält einen Zeiger (next
) zub
:Die Linie
next = current->next;
setztnext
zub
(einfach genug). Die nächste Zeilecurrent->next = result;
tut:Dann haben wir
result = current;
setztresult
zua
(wieder, einfach genug). Und schließlich haben wir die alle wichtigencurrent = next;
, diecurrent
zub
.So auf der nächsten iteration der while-Schleife, mit
next
eingestelltb
,result
eingestellta
, undcurrent
eingestelltb
starten wir über:Dann tun wir es wieder:
Haben wir einmal bekommen, um das Letzte Element in der verknüpften Liste (
e
in diesem Beispiel), geschieht dies:Jetzt, da
current
NULL ist, wird die while-Schleife beendet, und wir bleiben mit:die, wie Sie sehen können, jetzt macht
headRef
Punkt zue
, Behandlung vone
als die neue erste Element in unserer Link-Liste, mite->next
Hinweis aufd
,d->next
Hinweis aufc
usw.Machte ich ein Diagramm im Punkt, dass ich denke, wird grafisch erklären, was Los ist:
Link zum full-size image
Und hier ist der (schlampig) dot-Quelle, falls jemand interessiert:
Check-out diese Seite für eine visuelle Darstellung.
Es sieht aus wie eine gute codeproject Erklärung hier zu (Siehe Schritt 3).
Liste sah aus wie:
wir Umgekehrt jedes Stück von der Liste
so, jetzt starte ist am Ende, und wir schauen uns die Liste aus dem anderen Blickwinkel und sehen:
Sehen hier für eine gute Erklärung. Hier der Auszug: