繁体   English   中英

为什么Python链表里面的链表指针分开了?

[英]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)

什么是Trueid(head.next) == id(tail[0])

暂无
暂无

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

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