gpt4 book ai didi

python - 将linkedList节点设置为None不会清除父链接

转载 作者:太空宇宙 更新时间:2023-11-03 17:24:56 25 4
gpt4 key购买 nike

在我的 linkedList 中,以下是我实现删除方法的方法。

def remove(self,key):
if self.head is None:
return

z = self.head

while (z.key != key and z.next is not None):
z = z.next


if (z.key == key):
if z.next is None:
z = None
else:
z.key = z.next.key
z.value = z.next.value
z.next = z.next.next

self.size -= 1

我遇到的问题是,如果节点 z 没有下一个,则将其设置为无。但是下面的代码

w = LinkedList("A",5)
w.append("B", 7)
w.append("C",10)
w.remove("C")

最后会打印出A, B, C。这里的预期行为是打印 A 和 B。为什么将 z 设置为 none,而不将该节点的父节点引用也设置为 None?

最佳答案

您的删除方法是错误的,用下一个节点的值设置当前节点的值不起作用(它会重复下一个节点)。

此外,将 z 局部变量设置为 None 不会对实际链接列表产生任何影响。

要删除,您需要做的是迭代直到下一个节点具有相同key的节点,并且该节点的下一个集合指向下一个节点的下一个。示例-

def remove(self,key):
if self.head is None:
return
if self.head.key == key:
self.head = self.head.next
return
z = self.head
while z.next is not None and z.next.key != key:
z = z.next

if (z.next.key == key):
z.next = z.next.next
self.size -= 1

关于python - 将linkedList节点设置为None不会清除父链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32699391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com