【问题标题】:Linked List ques链表队列
【发布时间】:2020-01-04 19:23:05
【问题描述】:

我的疑问是当我制作 A.next=None 时,kam 变量不应该也存储 None 吗?为什么仍然指向节点 6?

class Node:

  def __init__(self, data):   # data -> value stored in node
      self.data = data
      self.next = None



a=Node(5)
b=Node(6)
c=Node(7)
d=Node(8)
a.next=b 
b.next=c 
c.next=d 
kam=a.next
a.next=None


while kam is not None:
    print(kam.data)
    kam=kam.next

【问题讨论】:

  • 想象一下,如果你写 kam = a + 1a 是 100 - kam 会被设置为 101,对吧?现在,如果您分配了a = 1000,您会期望kam 神奇地更新到1001,还是保持在101?

标签: python python-3.x algorithm data-structures linked-list


【解决方案1】:

那是因为您将a 实例的next 属性设为无,而不是c 节点。当 Python 运行 kam=a.next 时,真正发生的是 kam 变成了 a.next 所指向的值。如果您稍后更改a.next,则并不意味着kam 会更改。

【讨论】:

    【解决方案2】:

    我的疑问是当我制作 A.next=None 时,kam 变量不应该也存储 None 吗?为什么仍然指向节点 6?

    。 Python 执行任务。因此它将kam 设置为引用a.next 正在引用的在那一刻。因此它复制了引用。如果您稍后更改该值,这不会反映在 kam 本身上,因为它在您分配它的那一刻复制了引用。

    所以kam 指的是b,因为从分配的那一刻起,a.next 指的是b

    kam=a.next    # kam = b
    a.next=None   # a.next = None

    【讨论】:

      【解决方案3】:

      没有kam 指向b。当您执行 A.next = None 时,A 的 next 指针指向 none,但 kam 持有对 b 的引用。认为它们是排他性的。

      【讨论】:

        猜你喜欢
        • 2018-03-16
        • 2020-01-05
        • 2018-03-17
        • 1970-01-01
        • 2015-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多