当你使用 `ListNode(next=head)` 创建一个新的节点时,它实际上是复制了 `head` 的引用,并且将这个引用赋值给了 `next`。所以这两个节点指向的是同一个内存地址,也就是说它们实际上是相互影响的。
如果你想要创建一个独立的新节点,应该使用 `ListNode(value=head.value, next=None)` 这样的方式来创建一个新的节点,并将 `value` 设置为 `head` 的值,`next` 设置为 `None`。
下面是一个示例代码,演示如何创建两个独立的链表引用:
class ListNode:
def __init__(self, value=None, next=None):
self.value = value
self.next = next
# 创建链表
head = ListNode(1)
node2 = ListNode(2)
node3 = ListNode(3)
head.next = node2
node2.next = node3
# 创建新的链表引用
new_head = ListNode(value=head.value, next=None)
new_node2 = ListNode(value=node2.value, next=None)
new_node3 = ListNode(value=node3.value, next=None)
new_head.next = new_node2
new_node2.next = new_node3
# 修改原链表
head.value = 10
# 打印原链表
current = head
while current:
print(current.value)
current = current.next
# 打印新的链表
current = new_head
while current:
print(current.value)
current = current.next
输出结果:
可以看到,修改原链表的值并不会影响新链表的值。这是因为我们创建了两个独立的链表引用。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |