繁体   English   中英

关于 Python 中的链表的基本问题

[英]Basic question about Linked List in Python

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

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

谢谢

考虑链表中的 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 ie n1.next to new node with val = 1000 (head is unaltered) # Here as head points to n2, head.val = 2

这里重要的是head = head.next只重新分配head而不是curr

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM