如何遍历链接列表Python

时间:2014-10-18 23:33:43

标签: python loops recursion linked-list

我试图找出如何使用递归在Python中遍历链表。

我知道如何使用常见循环遍历链接列表,例如:

 item_cur = my_linked_list.first
       while item_cur is not None:
           print(item_cur.item)
           item_cur = item_cur.next  

我想知道如何将这个循环变成递归步骤。

由于

3 个答案:

答案 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)

您的链接列表看起来有两种类型。您有包含nextitem属性的列表节点,以及包含指向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