【问题标题】:Nested output from reversing LinkedList反转 LinkedList 的嵌套输出
【发布时间】:2021-02-27 00:12:59
【问题描述】:

在尝试构建完全递归的 LinkedList 反转时,如何避免嵌套输出 [(((4, 3), 2), 1)]?我想有一个输出 [4, 3, 2, 1)] 并想知道这是否可能在 Python 中而不迭代最终结果。

class Leaf:
    def __init__(self, value):
        self.value = value
        self.next_node = None
    def set_next(self, next_node):
        self.next_node = next_node

class LinkedList:
    def __init__(self, list_init):
        self.len = len(list_init)
        self.node = Leaf(list_init[0])
        self.node.set_next(build_node(list_init[1:]))
        
    def print(self):
        print("{}".format(self.node.value))
        next_node = self.node.next_node
        while(next_node is not None):
            print("{}".format(next_node.value))
            next_node = next_node.next_node
    
def build_node(list_nodes):
    if len(list_nodes) > 1:
        node = Leaf(list_nodes[0])
        node.set_next(build_node(list_nodes[1:]))
    else:
        node = Leaf(list_nodes[0])    
    return node

linkedList = LinkedList(list_init = [1, 2, 3, 4])

def reverse_linked_list(linkedList):
    first_node = linkedList.node
    def _reverse_linked_list(node):
        print("Enter: {}".format(node.value))
        if node.next_node is not None:
            print("Call: {}".format(node.next_node.value))
            return _reverse_linked_list(node.next_node), node.value
        return node.value
    return [_reverse_linked_list(first_node)]

reverse_linked_list(linkedList)

【问题讨论】:

    标签: python linked-list reverse


    【解决方案1】:

    我认为您可以将您的功能更新为:

    def reverse_linked_list(linkedList):
        first_node = linkedList.node
    
        def _reverse_linked_list(node):
            print("Enter: {}".format(node.value))
            if node.next_node is not None:
                print("Call: {}".format(node.next_node.value))
                prev_value = _reverse_linked_list(node.next_node)
                if isinstance(prev_value,int):
                    prev_value = (prev_value,)
                return (*prev_value, node.value)
            return node.value
    
        return [*_reverse_linked_list(first_node)]
    
    reverse_linked_list(linkedList)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-08
      • 2011-05-02
      • 1970-01-01
      • 2013-01-11
      • 1970-01-01
      • 2019-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多