【问题标题】:need clarification on node.next pointer in python linkedlist需要澄清 python 链表中的 node.next 指针
【发布时间】:2017-03-02 20:18:12
【问题描述】:

我无法理解 python 中的按值传递属性。在下面的代码中,runner 复制了currentrunner.next 指向给定链表的下一个节点,而我们将runner.next 设置为runner.next.next,这对cur.next.next 有何影响? runner.nextcur.next 是否都指向同一个地址?因为在我看来,runner 只是 current 的一个副本,它无法访问原始的 cur.next。请教我。

        def remove_dups_followup(ll):
            if ll.head is None:
                return

            current = ll.head
            while current:
                runner = current
                while runner.next:
                    if runner.next.value == current.value:
                        runner.next = runner.next.next
                    else:
                        runner = runner.next
                current = current.next

            return ll.head

【问题讨论】:

    标签: python linked-list deep-copy shallow-copy


    【解决方案1】:
    runner = current
    

    这不会创建current副本,而是为对象分配另一个名称,也称为current。所以runnercurrent 只是同一个对象实例的两个不同名称。因此,对runner 状态的任何更改也会影响current,至少在runner 被重新分配给列表中的下一个节点之前。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-23
      • 2013-09-13
      • 1970-01-01
      • 1970-01-01
      • 2011-11-09
      • 2012-07-18
      • 1970-01-01
      • 2023-03-09
      相关资源
      最近更新 更多