Warum wirkt sich der nächste Zeiger eines verknüpften Listenknotens auf Null nicht auch auf den Knoten aus, auf den er vJava

Java-Forum
Guest
 Warum wirkt sich der nächste Zeiger eines verknüpften Listenknotens auf Null nicht auch auf den Knoten aus, auf den er v

Post by Guest »

Ich versuche, eine einzeln verknüpfte Liste in Java umzukehren, aber ich begegne mich, wie Referenzen während des Umkehrprozesses funktionieren. Insbesondere verstehe ich nicht, warum das Festlegen des nächsten Zeigers eines Knotens auf Null den Knoten, auf den er hingewiesen hat, nicht beeinflusst (d. H. Der Knoten danach). Beispiel Um das Problem zu veranschaulichen: < /p>
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 
ausführe, speichert dies den Verweis auf den nächsten Knoten (d. H. In der ersten Iteration zeigt die Front auf Knoten 2, weil Tempo -1 Node 1 ist). Dies ist gültig, und der Knoten 2 ist jetzt die vordere Referenz. (d. H. Einlegen von Node1.Next = NULL ) wird nur der nächste Zeiger des Knotens 1 aktualisiert. Es wirkt sich nicht auf den Knoten 2 aus, obwohl der Node 1 -Schritt in der Vorderseite = temp.Next auf den Knoten zeigt. node1.next = null , nur der nächste Zeiger des Knotens 1 wird aktualisiert, aber nicht der nächste Knoten 2 (oder Knoten 2 selbst)?
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 ?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post