链表中的节点如何 pointed/referenced
How Nodes are pointed/referenced in linkedlist
我对链表中的节点如何相互引用感到非常困惑。
假设我们有这样的代码:
</code> <code>NodeA: 1->2->3;
NodeB: 6->7->8;
ListNode NodeC = NodeA;
IF WE DO:
NodeC.next = NodeB;// NodeC becomes 1->6->7->8, NodeA also changed to 1->6->7->8, why?
OR WE DO:
NodeC = NodeB;//this will only change NodeC, but NodeA stay the origin, why?
当我们将两个节点设置为相同时,如果我们将一个节点更改为下一个指向不同的节点,则另一个节点也会更改。 但是,如果只说NodeC = NodeB,好像NodeA上没有任何变化。我一直在为此苦苦挣扎
几天了,谁能解释一下这是如何工作的?非常感谢!
当你说NodeA: 1->2->3;
时,有3个节点被引用,1个变量:
// These are the nodes. They don't have names, I'm just calling them NodeX, where X is a number.
Node1
value = 1
next = Node2
Node2
value = 2
next = Node3
Node3
value = 3
next = null
// This is the variable
NodeA = Node1
然后,NodeB: 6->7->8;
引用另一组节点,Node6, Node7, Node8
,和一个变量NodeB = Node6
。
当您执行 NodeC = NodeA
时,现在有两个变量,每个变量都引用 Node1
。所以NodeC = NodeA = 1->2->3
。希望到目前为止这是有意义的。
当您执行 NodeC.next = NodeB
时,我们是说,对于变量 NodeC
(即 Node1
)引用的节点,将其 next
成员更新为任何内容由变量 NodeB
(即 Node6
)引用。
所以
NodeC = NodeA = Node1 // Variables
NodeB = Node6
Node1
value = 1
next = Node6
所以NodeC = 1->6->7->8
。由于 NodeA
也指代 NodeC
所指的同一节点,因此 NodeA also = 1->6->7->8
.
当您执行 NodeC = NodeB
时,NodeC
现在引用 Node6
,并且 NodeA
继续引用 Node1
,因此更改为 NodeC
不影响 NodeA
.
我对链表中的节点如何相互引用感到非常困惑。 假设我们有这样的代码:
</code> <code>NodeA: 1->2->3;
NodeB: 6->7->8;
ListNode NodeC = NodeA;
IF WE DO:
NodeC.next = NodeB;// NodeC becomes 1->6->7->8, NodeA also changed to 1->6->7->8, why?
OR WE DO:
NodeC = NodeB;//this will only change NodeC, but NodeA stay the origin, why?
当我们将两个节点设置为相同时,如果我们将一个节点更改为下一个指向不同的节点,则另一个节点也会更改。 但是,如果只说NodeC = NodeB,好像NodeA上没有任何变化。我一直在为此苦苦挣扎 几天了,谁能解释一下这是如何工作的?非常感谢!
当你说NodeA: 1->2->3;
时,有3个节点被引用,1个变量:
// These are the nodes. They don't have names, I'm just calling them NodeX, where X is a number.
Node1
value = 1
next = Node2
Node2
value = 2
next = Node3
Node3
value = 3
next = null
// This is the variable
NodeA = Node1
然后,NodeB: 6->7->8;
引用另一组节点,Node6, Node7, Node8
,和一个变量NodeB = Node6
。
当您执行 NodeC = NodeA
时,现在有两个变量,每个变量都引用 Node1
。所以NodeC = NodeA = 1->2->3
。希望到目前为止这是有意义的。
当您执行 NodeC.next = NodeB
时,我们是说,对于变量 NodeC
(即 Node1
)引用的节点,将其 next
成员更新为任何内容由变量 NodeB
(即 Node6
)引用。
所以
NodeC = NodeA = Node1 // Variables
NodeB = Node6
Node1
value = 1
next = Node6
所以NodeC = 1->6->7->8
。由于 NodeA
也指代 NodeC
所指的同一节点,因此 NodeA also = 1->6->7->8
.
当您执行 NodeC = NodeB
时,NodeC
现在引用 Node6
,并且 NodeA
继续引用 Node1
,因此更改为 NodeC
不影响 NodeA
.