使用递归进行链表反向打印的意外结果



>我使用递归以相反的顺序打印链表。我正在玩弄代码并在递归调用上方添加了另一个 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

相关内容

  • 没有找到相关文章

最新更新