Python 返回列表的链表函数
我的add_after函数接受一个列表,如[2,1,8,2,2,4,2,5,2],以及一个值和一个新值。它会将新值添加到列表中显示的每个值中。例如: l=[2,1,8,2,2,4,2,5,2], 在(a,2,-1)之后调用add_将返回2->-1->1->8->2->-1->2->-1->4->2->-1->5->2->-1->None。它在列表中每2个之后添加-1 我的add_after函数的问题是它只将新值添加到列表中出现的第一个值 例如,如果我在列表[1,8,2,4,2,5,2]的(ll,2,-1)之后调用add_,它将返回1->8->2->1->4->2->5->2->NonePython 返回列表的链表函数,python,linked-list,Python,Linked List,我的add_after函数接受一个列表,如[2,1,8,2,2,4,2,5,2],以及一个值和一个新值。它会将新值添加到列表中显示的每个值中。例如: l=[2,1,8,2,2,4,2,5,2], 在(a,2,-1)之后调用add_将返回2->-1->1->8->2->-1->2->-1->4->2->-1->5->2->-1->None。它在列表中每2个之后添加-1 我的add_after函数的问题是它只将新值添加到列表中出现的第一个值 例如,如果我在列表[1,8,2,4,2,5,2]的(ll,
有人能帮我修复add_after函数,以便它可以应用于列表中的所有值吗?非常感谢。这个
break
语句打破了循环,因此它无法通过列表的其余部分
还有其他问题。代码的更正版本:
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
下面是将列表转换为双链接列表的快速方法。通读并理解它,然后你应该能够修改它以满足你的需要
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
你能澄清你的例子吗?我不明白你是怎么得到你的链表的,或者你的参数是什么意思。如果ll=[2,1,8,2,2,4,2,5,2],在(ll,2,-1)之后添加(ll,value,new_value),调用add_after(ll,2,-1)返回2->-1->1->8->2->-1->2->-1->-1->4->2->-1->5->2->-1->non。它向每个值添加新的值。可能是重复的哦,对不起,我发布了错误的代码,我刚刚更改了它。我试图消除中断,但程序似乎卡住了。我不确定这意味着什么,你能解释更多吗?在init中,你使用“左”和“右”作为字段名。在使用“下一步”后添加。你发布的内容无法工作。可能是缺少了什么,或者你发布的内容不好。哦,我确实发布了错误的代码,很抱歉,我刚刚更改了它。我在答案中添加了你代码的更正版本。你的代码有几个问题。对不起,我以前发布了错误的代码,我只是更改了它
def link_list(l):
if not l:
return None
head = TN(l[0])
prev = head
for val in l[1:]:
curr = TN(val, prev)
prev.right = curr
prev=curr
return head