【发布时间】:2021-10-21 17:40:20
【问题描述】:
我正在尝试使用虚拟头技术解决合并两个排序的链表问题。出于某种原因,我将参数传递给我的假头持有人时出错。输出假设像这样合并两个链表:1-> 1-> 2-> 3-> 7-> None
如果您能指导我的虚拟头变量中需要传递哪些数据,我会很高兴?提前致谢!这是我遇到的错误:
dummy = LinkedList()
TypeError: __init__() missing 1 required positional argument: 'data
这是我的完整代码:
class LinkedList:
def __init__(self, data):
self.data = data
self.next = None
def print_list(head: LinkedList) -> None:
while head:
print(head.data, end=" -> ")
head = head.next
print("None")
def merge_lists(headA, headB):
dummy = LinkedList()
curr = dummy
while headA != None and headB != None:
if headA.data < headB.data:
curr.next = headA
headA = headA.next
else:
curr.next = headB
headB = headB.next
curr = curr.next
if headA != None:
curr.next = headA
else:
curr.next = headB
return dummy.next
node1 = LinkedList(1)
node1.next = LinkedList(2)
node1.next.next = LinkedList(7)
node2 = LinkedList(1)
node2.next = LinkedList(3)
print(merge_lists(node1, node2)) # 1-> 1-> 2-> 3-> 7-> None
【问题讨论】:
-
您正在创建一个需要参数的对象:
dummy = LinkedList() -
正确,我尝试将 None, "dummy" 作为参数传递,但我仍然看不到输出。例如,当我将 None 作为参数传递时,它向我显示了这样的引用: <__main__.linkedlist object at>
-
您正在返回一个对象,这就是输出看起来像这样的原因。您可能需要另一个函数来遍历列表并打印每个节点的数据
-
我使用了 print_list 函数而不是 print,解决了这个问题。我尝试了创建另一个这样的函数的方法: for i in range(headA + headB): print(dummy(i), end = " ") 在最终返回之后,它没有工作。你能指导我怎么做吗?谢谢!
标签: python linked-list singly-linked-list