class LN:
def __init__(self,value,next=None):
self.value = value
self.next = next
def add_after(ll,value,new):
item = ll
while item is not None:
if item.value == value:
newnode = LN(new, item.next)
item.next = newnode
break
else:
item = item.next
我的add_after函数接受一个列表,例如[2,1,8,2,2,4,2,5,2],以及一个值和一个新值。它将新值添加到列表中出现的每个值。例如:
l = [2,1,8,2,2,4,2,5,2], 调用 add_after(a,2,-1) 返回 2->-1->1->8->2->-1->2->-1->4->2->-1->5->2->-1->无。它在列表中每 2 个后面添加 -1
我的 add_after 函数的问题是它只将新值添加到列表中出现的第一个值。
例如,如果我对列表 [1,8,2,4,2,5,2] 调用 add_after(ll,2,-1),它将返回 1->8->2->-1 ->4->2->5->2->无
有人可以帮我修复我的 add_after 函数,以便它可以应用于列表中的所有值吗?非常感谢。
最佳答案
break
语句中断循环,因此它不会遍历列表的其余部分。
还有其他问题。代码的更正版本:
class TN:
def __init__(self,value,next=None):
self.value = value
self.next = next
def add_after(self, value, new):
item = self
while item is not None:
if item.value == value:
newnode = TN(new, item.next)
item.next = newnode
item = newnode.next
else:
item = item.next
关于python - 返回列表的链表函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40579713/