Когда вы говорите 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
).
So
NodeC = NodeA = Node1 // Variables
NodeB = Node6
Node1
value = 1
next = Node6
So NodeC = 1->6->7->8
. И поскольку NodeA
также ссылается на тот же узел, что и NodeC
, NodeA also = 1->6->7->8
.
Когда вы делаете NodeC = NodeB
, NodeC
теперь ссылается на Node6
, а NodeA
продолжает ссылаться Node1
, поэтому изменения на NodeC
не влияют на NodeA
.