[英]Why does the linked list pointer inside Python list become separate?
在变量“head”中保存指向链表节点的指针后,我将“head”插入到 Python 列表(名为“tail”)中。 那么,即使我通过访问Python列表中的'head'变量遍历链表,我仍然可以通过访问'head'访问链表的头部。 可以通过比较两个 id 来检查:id(head).= id(tail[0])。
为什么会这样?
head = ListNode(0) # Stored a pointer to a ListNode(0)
tail = [head] # Assigned a pointer to a Python list having a 'head' as an element
tail[0].next = ListNode(1) # Attached a ListNode(1)
tail[0] = tail[0].next # Traversed
id(head) == id(tail[0]) # Gives 'False'; two ids are unequal.
# FYI - ListNode definition
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
tail[0].next = ListNode(1) # Attached a ListNode(1)
tail[0] = tail[0].next # Traversed
就数组发生的事情而言只是
tail[0] = ListNode(1)
然后你会以某种方式感到困惑,为什么它不等于head
?! 因为head
仍然是ListNode(0)
。
什么是True
是id(head.next) == id(tail[0])
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.