>我使用递归以相反的顺序打印链表。我正在玩弄代码并在递归调用上方添加了另一个 print 语句,并期望它以原始顺序打印链表,但它只打印列表的第一个元素。我的链表包含以下数据
0 --> 1 --> 2 --> 3 --> 4 --> 5 --> 6 -->
链表类-
class node_obj:
def __init__(self, d):
self.data = d
self.next = None
我的递归函数-
def recursive_revers1(head):
if head != None:
print('--------', head.data)
recursive_rev(head.next)
print(head.data)
recursive_revers1(head)
输出:
-------- 0
6
5
4
3
2
1
0
链表被正确反转,但为什么第一个打印语句只工作?我希望它能按原始顺序打印整个列表。
你在递归中调用了错误的函数:recursive_rev
(可能是代码的早期版本(,但你的递归函数现在被称为recursive_revers1
。这对我有用:
def recursive_revers1(head):
if head: # recommended way to ask if something is not None
print('--------', head.data)
recursive_revers1(head.next) # here was the mistake
print(head.data)
recursive_revers1(head)
现在在控制台中,我们得到:
-------- 0
-------- 1
-------- 2
-------- 3
-------- 4
-------- 5
-------- 6
6
5
4
3
2
1
0