簡體   English   中英

不了解 Linkedlist 節點指針如何指向其他節點?

[英]not understanding how a Linkedlist node pointer points to other nodes?

public class ListNode {
  int val;
  ListNode next;
  ListNode(int x) { val = x; }
}

所以給出了上面 listnode 類的定義。 如果我做

ListNode node1 = new ListNode(-1);

然后

ListNode node2 = node1;

這是否意味着節點 2 指向節點 1 或節點 1 現在有一個指向節點 2 的指針。

如果我做ListNode node3 = new ListNode(-7); then node2.next = node3; ListNode node3 = new ListNode(-7); then node2.next = node3;

這是否意味着我們現在有一個 node1->node2->node3 指向這個方向?

在第一個例子中

ListNode node1 = new ListNode(-1);
ListNode node2 = node1;

node1node2現在指向同一個ListNode對象

System.out.println(node1.equals(node2));

將打印true而不覆蓋equals()

當你做

ListNode node3 = new ListNode(-7);
node2.next = node3;

要指定node3next的類成員node2 ,並為此向node1的一個next ,以及

System.out.println(node1.next.equals(node2.next)); // true
System.out.println("node1: " + node1.next.val + " node2: " + node2.next.val); // node1: -7 node2: -7

要記住的一件事是,當您編寫ListNode node1 = new ListNode(-1)然后ListNode node2 = node1 ,'node1' 和 'node2' 並指向 'new ListNode(-1)'對象 因此,如果您更改“node1”或“node2”,它將更改指向其他內容的指針。

現在一旦你這樣做

ListNode node3 = new ListNode(-7);
ListNode node2 = node1;

你的node2仍然指向new ListNode(-1)對象,因此你最終會得到 -1 -> -7。 對於指針,您將擁有node1 -> ListNode(-1)node2 -> ListNode(-1)node3 -> ListNode(-7)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM