【发布时间】:2020-01-05 09:36:24
【问题描述】:
所以在第一个代码中,我正在制作 a.next=b。这意味着 a.next 和 b 都作为对 Node6 的引用。所以当我制作 b=None.. 为什么 a.next 仍然指向 Node6,
在第二个代码中,当我使用 c=a 时,c 和 a 都是对节点 5 的引用。现在我正在创建 c.next=None,但是这种更改也反映到了 a。甚至 a.next 都变成了 None。
两个代码我都做了相同的步骤,为什么更改只反映在代码 2 中?
class Node:
def __init__(self, x):
self.val = x
self.next = None
a=Node(5)
b=Node(6)
a.next=b
b=None
while a is not None:
print(a.val)
a=a.next
代码 2
class Node:
def __init__(self, x):
self.val = x
self.next = None
a=Node(5)
b=Node(6)
a.next=b
c=a
c.next=None
while a is not None:
print(a.val)
a=a.next
【问题讨论】:
-
在第一个示例中,您将
b设置为None,这不会删除引用的对象,因为在a.next中还有一个对该对象的引用。在第二个示例中,您实际上没有更改任何内容,因为您将a.next设置为None,默认情况下已经是None。 -
我已经编辑了code2。请先生回答。
-
但是现在第一个和第二个例子是一样的..
-
对不起,先生。
-
当您创建
c=a时,您传递的不是a 的值,而是对a 的引用。因此,从那里开始,c 将引用与 a 所引用的对象相同的对象。
标签: python python-3.x algorithm data-structures linked-list