所以在第一个代码中,我让 a.next=b。这意味着 a.next 和 b 都充当对 Node6 的引用。所以当我做 b=None.. 为什么 a.next 仍然指向 Node6,
在第二个代码中,当我使用 aking c=a 时,c 和 a 都是对节点 5 的引用。现在我使用 c.next=None,但是这个更改也被反射(reflect)到 a 中。甚至 a.next 也变成 None。
这两个代码我都做了相同的步骤,为什么更改只反射(reflect)在代码 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
最佳答案
情况1:列表a
在链表中有两个节点5和6。
但是情况 2:列表 a
和 c
在链表中有一个节点 5。而另一个链表由b
指向,它只有6。
希望这能澄清您的疑问。
注意:
- 由于 a、b、c 是存储地址的指针。当你执行c.next=None
时,c
(也就是a
所指向)指向的地址next的值变为None。
关于python - 简单的链表队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57755407/