【发布时间】:2018-09-29 00:15:53
【问题描述】:
合并两个已排序的链表并将其作为新链表返回。应该通过将前两个列表的节点拼接在一起来制作新列表。
我已经差不多完成了。我无法让它工作。任何使其工作的提示将不胜感激。
class node():
def __init__(self, data, next_node):
self.data = data
self.next_node = None
def get_data(self):
return self.data
def get_next(self):
return self.next_node
def set_next(self, new_node):
self.next_node = new_node
class LinkList(object):
def __init__(self, head = None):
self.head = head
def add(self, data):
new_node = node(data)
new_node.set_next(self.head)
self.head = new_node
def printlist(self):
current_node = self.head
while (current_node != None):
print(current_node.get_data(), end="->")
current_node = current_node.get_next()
def merge(L1, L2):
temp = None
if L1 is None:
return L2
if L2 is None:
return L1
if L1.data <= L2.data:
temp = L1
temp.next_node = merge(L1.next_node, L2)
else:
temp = L2
temp.next_node = merge(L1,L2.next_node)
return temp
def main():
list1 = LinkList()
list1.add(10)
list1.add(20)
list1.add(30)
list2 = LinkList()
list2.add(10)
list2.add(30)
list2.add(50)
list3 = LinkList()
list3.head = merge(list1.head, list2.head)
print("merge link list: ", end=" " )
list3.printlist()
if __name__ == "__main__":
main()
【问题讨论】:
-
哪个部分不起作用?你的错误到底是什么?
-
1.在添加函数中,我得到类型错误:__init__() 缺少 1 个必需的位置参数:'next_node'。
-
我不知道你这样做是为了课堂作业还是什么。但是,在一次谷歌面试中,我被问到如何在 python 中制作一个链表……我只是认为这是在浪费时间。 Python 内置了列表,您不应该“自己动手”。特别是由于python没有指针,所以完全没有理由在python中实现链表,零教育收益。
标签: python python-3.x