def delete_node(head, value):
p=head
if p is None:
return None
while p.value!=value:
p=p.next
if p.next is head and p.value!=value:
return head
p.value=p.next.value
if p.next==head:
head=p
p.next=p.next.next
return head
以上是我的代码,用于根据节点的值删除循环链表中的节点! 代码不会给这种情况带来结果 - 我在列表中只有1个元素而且我删除了它。所以结果应该是一个空集......但是因为我拿了 p.value = p。 next.value 它再次指向自身,并且列表中的值相同!谁能帮我吗! Thanx提前! :)
答案 0 :(得分:2)
这里最简单的解决方案是在空列表的情况下有一个指向自身的虚拟节点。因此,在空列表中,我们有一个指向自身的节点(虚拟),在列表中有一个元素,虚拟指向元素,元素指向虚拟。
避免任何特殊情况的需要,并且通常简化代码。要检查列表是否为空,您可以执行dummy.next is dummy
,也很好。