【问题标题】:Turning a singly linked list into a list of integers recursively递归地将单链表转换为整数列表
【发布时间】:2020-11-21 00:41:16
【问题描述】:

我正在尝试以递归方式将单链表转换为整数列表。我试图编写一个函数,但它没有按我的预期工作。 该函数应该接受像Node(1, Node(2, None)) 这样的列表,并且应该返回像[1, 2] 这样的整数列表。 我试图编写下面的函数,但我得到的输出是[1]。我不确定我哪里出错了,因为我对递归很陌生。

def linked(items: Optional[Cell]) -> List[int]:
    if items is None:
        return None
    elif items.next is not None:
        list_int = []
        list_int.append(items.data)
        linked(items.next)
        return list_int

这是 Cell 的类定义:

class Cell:
    data: int
    next: Optional[Cell]

    def __init__(self, data: int, next: Optional[Cell]):
        """Constructs a singly linked list."""
        self.data = data
        self.next = next

***编辑得更加专注和清晰

【问题讨论】:

  • 请从intro tour 重复on topic 和how to ask。 Stack Overflow 和网上其他地方有许多示例,向您展示如何在递归过程中累积结果。我们希望您在此处发布之前搜索并使用这些资源。
  • 首先,不要调用你的函数list,因为那样你就不再看到内置列表了。

标签: python list recursion singly-linked-list


【解决方案1】:

我不确定节点应该是什么,但我猜你想要做的是从嵌套的整数列表中创建一个整数列表。如果是这样,这是我认为可以正常工作的代码:

def unpack_nested_lists(L):

    list_of_integers = []

    for element in L:

        if type(element) is list:
            list_of_integers += unpack_nested_lists(element)

        else:
            list_of_integers.append(element)

    return list_of_integers

希望对你有帮助

保罗

【讨论】:

    【解决方案2】:

    尝试填写您未提供的代码,这大致是您想要做的:

    class LinkedList():
        def __init__(self, data, link):
            self.data = data
            self.link = link
    
        def toList(self):
            if self.link is None:
                return [self.data]
    
            return [self.data] + self.link.toList()
    
    example = LinkedList(1, LinkedList(7, LinkedList(7, LinkedList(6, None))))
    
    print(example.toList())
    

    输出

    > python3 test.py
    [1, 7, 7, 6]
    >
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-05
      • 2015-12-03
      • 2012-02-14
      • 1970-01-01
      • 2019-12-04
      • 1970-01-01
      • 1970-01-01
      • 2020-05-24
      相关资源
      最近更新 更多