提问者:小点点

关于Python中链表的基本问题


让head指向以下链表的第一个元素1-

当:

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'.

有人能解释一下为什么在第一种情况下我们修改节点值w. r.t head而在第二种情况下我们没有?

谢谢你们


共1个答案

匿名用户

考虑链表中的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