Beispiel:
Betrachten Sie die folgende anfängliche verlinkte Liste: < /p>
Code: Select all
1 -> 2 -> 3 -> null
< /code>
In der ersten Iteration der Schleife sind die nächsten Punkte des Knotens 1 auf Knoten 2. Ich verwende den folgenden Code, um die Liste umzukehren: < /p>
class ListNode {
int val;
ListNode next;
ListNode(int val) { this.val = val; }
}
class Solution {
public ListNode reverseList(ListNode head) {
ListNode prev = null;
ListNode temp = head;
while (temp != null) {
ListNode front = temp.next; // Save next node (which is node 2 initially)
temp.next = prev; // Set node1.next to null (disconnect node1 from node2)
prev = temp;
temp = front;
}
return prev;
}
}
< /code>
Was ich erwarte:
zunächst den Node 1 -Punkt auf Knoten 2.
In der ersten Iteration, wenn ich node1.next = null < /festlegt Code>, ich erwarte, dass der Knoten 2 selbst irgendwie betroffen sein wird - entweder sollte sein nächster Zeiger null werden, oder der Knoten 2 selbst sollte null werden. Code> Die Liste wird: < /p>
1 -> null
2 -> 3 -> null
< /code>
Knoten 2 bleibt unberührt, und sein nächster Zeiger zeigt immer noch auf Knoten. /> Warum wird Node 2 nicht null, wenn ich den nächsten Zeiger von Knoten 1 auf null setze? selbst), aber das passiert nicht. < /p>
Beispiel mit vorderem Zeiger:
Lassen > Wenn ich Front = temp.Next
Was ich nicht verstehe:
Warum wirkt sich nicht auf den Knoten aus, auf den Node1.Next = null < /code> auf den Knoten1 auswirkt, auf den Node1.Next (d. H. Knoten 2) zeigt, wenn die Front beim Speichern korrekt eine Referenz auf Knoten 2 enthalten kann temp.Next , warum wird Node 2 selbst nicht null (oder sein nächster Zeiger wird geändert), wenn Node1.next = null ?