这是我的代码:
def merge_lists(head1, head2):
if head1 is None and head2 is None:
return None
if head1 is None:
return head2
if head2 is None:
return head1
if head1.value < head2.value:
temp = head1
else:
temp = head2
while head1 != None and head2 != None:
if head1.value < head2.value:
temp.next = head1
head1 = head1.next
else:
temp.next = head2
head2 = head2.next
if head1 is None:
temp.next = head2
else:
temp.next = head1
return temp
pass
这里的问题在无限循环中受阻了。有人能告诉我问题是什么吗
例如:
assert [] == merge_lists([],[])
assert [1,2,3] == merge_lists([1,2,3], [])
assert [1,2,3] == merge_lists([], [1,2,3])
assert [1,1,2,2,3,3,4,5] == merge_lists([1,2,3], [1,2,3,4,5])
当前代码的问题是,在从当前节点导航到下一个节点之前,它会导致临时节点next的副作用。当当前temp节点是当前节点时,这是有问题的。
也就是说,想象一下这个案例:
有一个已更正的版本,其中包含一些其他更新:
完整代码:-
为链表的每个节点定义“Node”类。
“linkedlist”类的定义。
“合并”功能的定义。
参数“ll1”和“ll2”是两个链表的头。
在列表中输入。
从输入列表值创建链表,即ll1和ll2。
通过传递两个链表的头,使用merge函数合并两个排序的链表
“merge”函数返回迭代器本身,迭代器的值打印为:
自定义输入和输出:-
输入
1个
4个
1 3 5 7年
4个
2 4 6 12个
输出
1 2 3 4 5 6 7 12
两个排序链表合并的递归算法
相关问题 更多 >
编程相关推荐