0

让 head 指向以下链表的第一个元素 1->2->3->Null
链表的每个元素都是具有属性的 Node() : val 和 next

什么时候 :

curr=head
head=head.next
curr.next.val= 1000
#here head.val outputs 1000 : We changed the value of the 2nd node

但当 :

curr=head
head=head.next
curr.next= Node(1000)
#here head.val outputs 2, it seems that the change
#we made in the previous line didn't
#affect the node but rather created a new 'route'.

有人可以解释为什么在第一种情况下我们正在修改节点值 wrt head 而在第二种情况下我们没有?

谢谢

4

1 回答 1

0

考虑链表中的 3 个节点 n1、n2、n3。

head = n1
curr = head
# All n1, head and curr will be pointing to same memory.
head = head.next
# head will be reasigned to n2, but curr points to n1 itself.
第一种情况
curr.next.val = 1000
# curr.next is same as n1.next which is n2 so n2.val becomes 1000
# As head points to n2 head.val is also 1000
第二种情况
curr.next = node(1000)
# it reassigns curr.next i.e n1.next to new node with val = 1000 (head is unaltered)
# Here as head points to n2, head.val = 2

这里重要的是重新head = head.next分配headcurr

于 2020-08-16T09:21:55.110 回答