Python 为什么我的程序最终没有打印?
我自己在学习算法和数据结构,并想编写一个程序,以以下方式合并两个链表:给定两个整数a和b,它将从第一个链表中删除从a到b的节点,并插入第二个链表 我从中获取了一个链表的实现,并编写了一个函数Python 为什么我的程序最终没有打印?,python,python-3.x,list,linked-list,Python,Python 3.x,List,Linked List,我自己在学习算法和数据结构,并想编写一个程序,以以下方式合并两个链表:给定两个整数a和b,它将从第一个链表中删除从a到b的节点,并插入第二个链表 我从中获取了一个链表的实现,并编写了一个函数 def merge(list1: LinkedList, a: int, b: int, list2: LinkedList) -> LinkedList: current = list1.head previous = None insertion = list2.head
def merge(list1: LinkedList, a: int, b: int, list2: LinkedList) -> LinkedList:
current = list1.head
previous = None
insertion = list2.head
counter = 0
while insertion.next_node:
insertion = insertion.next_node
while current:
if counter == a:
previous.next_node = list2.head
elif counter == b:
insertion.next_node = current.next_node
previous = current
counter += 1
current = current.next_node
return list1.printList()
这是生成程序的完整代码:
class Node(object):
def __init__(self, data=None, next_node=None):
self.data = data
self.next_node = next_node
class LinkedList(object):
def __init__(self, head=None):
self.head = head
def size(self):
current = self.head
count = 0
while current:
count += 1
current = current.next_node
return count
def printList(self):
temp = self.head
while (temp):
print (temp.data, " -> ", end = '')
temp = temp.next_node
print("")
def insert_at_head(self, data):
new_node = Node(data)
new_node.next_node = self.head
self.head = new_node
def get_next_node (self,node):
return node.next_node.data
list1 = LinkedList(Node(0))
s = list1.head
for i in range(1,6):
s.next_node = Node(i)
s = s.next_node
list1.printList()
list2 = LinkedList(Node(99))
w = list2.head
for j in range(98,96,-1):
w.next_node = Node(j)
w = w.next_node
list2.printList()
def merge(list1: LinkedList, a: int, b: int, list2: LinkedList) -> LinkedList:
current = list1.head
previous = None
insertion = list2.head
counter = 0
while insertion.next_node:
insertion = insertion.next_node
while current:
if counter == a:
previous.next_node = list2.head
elif counter == b:
insertion.next_node = current.next_node
previous = current
counter += 1
current = current.next_node
return list1.printList()
print(merge(list1, 1, 3, list2))
它的工作原理与预期相同,只是在输出的末尾打印了一个额外的None。为什么不打印?我遗漏了什么?您的最后一行打印您的合并呼叫的返回。merge
的返回是list.printList()
。但是,list.printList()
没有定义返回,因此它默认为None
。请注意,list.printList()
调用时仍会打印;它只是没有定义的返回
听起来您只是想调用merge
,而不需要打印。所以最后一行可能是:
merge(list1, 1, 3, list2)