递归地将单链表变成整数列表

问题描述 投票:0回答:3

我正在尝试以递归方式将单链表转换为整数列表。我试图编写一个函数,但它没有按照我的预期工作。 该函数应该接受一个像

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

***编辑得更加集中和清晰

python list recursion singly-linked-list
3个回答
0
投票

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

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

希望对你有帮助

保罗


0
投票

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

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]
>

0
投票

这是我将链接列表转换为常规列表的代码。这段代码主要适用于 leetcode,它适用于负数和其他东西。我希望这有帮助。

# Definition for singly-linked list.
# class ListNode:
#     def __init_`enter code here`_(self, val=0, next=None):
#         self.val = val
#         self.next = next

def ToArray(x):
    l=[]
    p=[]
    t=0
    for i in str(x):
        if i == '-' or i.isnumeric():
            l.append(i)
            t=1
        elif t==1 and i != '-' and i.isnumeric()==False:
            p.append(int(''.join(l)))
            l=[]
            t=0
    return(p)
© www.soinside.com 2019 - 2024. All rights reserved.