class LN:
def __init__(self,value,next=None):
self.value = value
self.next = next
def remove(ll,v):
head = ll
if head.value == v:
head = head.next
while ll.next.next != None:
if ll.next.value == v:
ll.next = ll.next.next
ll = ll.next
return head
由于某种原因,此函数仅删除了部分值v,但未删除所有值,我如何修改它以删除所有出现的v?
谢谢 !
现有代码存在两个问题。处理列表开头时,您必须处理列表开头有多个项目需要删除的情况。因此,if
您不需要循环,完成循环后,如果所有项目均已删除,则可以返回
while ll and ll.value == v:
ll = ll.next
# Return if list is depleted or was empty to begin with
if not ll:
return ll
此时,您已经返回或ll
指向了应该保留的第一个节点,即新列表的头部。由于我们需要返回头,因此我们必须存储它,然后处理以下所有节点。可以通过检查下一个节点的值来完成。如果是,v
则可以跳过:
# At this point ll points to head of the new list
head = ll
while ll.next:
if ll.next.value == v:
ll.next = ll.next.next
else:
ll = ll.next
return head
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句