我试图找出如何使用递归在Python中遍历链表。
我知道如何使用常见循环遍历链接列表,例如:
item_cur = my_linked_list.first
while item_cur is not None:
print(item_cur.item)
item_cur = item_cur.next
我想知道如何将这个循环变成递归步骤。
由于
答案 0 :(得分:0)
试试这个。
class Node:
def __init__(self,val,nxt):
self.val = val
self.nxt = nxt
def reverce(node):
if not node.nxt:
print node.val
return
reverce(node.nxt)
print node.val
n0 = Node(4,None)
n1 = Node(3,n0)
n2 = Node(2,n1)
n3 = Node(1,n2)
reverce(n3)
答案 1 :(得分:0)
你可以这样做:
def print_linked_list(item):
# base case
if item == None:
return
# lets print the current node
print(item.item)
# print the next nodes
print_linked_list(item.next)
答案 2 :(得分:0)
您的链接列表看起来有两种类型。您有包含next
和item
属性的列表节点,以及包含指向first
节点的属性的包装器对象。要递归地打印列表,你需要有两个函数,一个用于处理包装器,一个辅助函数用于对节点进行递归处理。
def print_list(linked_list): # Non-recursive outer function. You might want
_print_list_helper(linked_list.first) # to update it to handle empty lists nicely!
def _print_list_helper(node): # Recursive helper function, gets passed a
if node is not None: # "node", rather than the list wrapper object.
print(node.item)
_print_list_helper(node.next) # Base case, when None is passed, does nothing