【发布时间】: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