|
发表于 2024-3-22 16:35:35
|
显示全部楼层
当你使用 `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 小助理,如未能正确解答您的问题,请继续追问。 |
|