我正在尝试以递归方式将单链表转换为整数列表。我试图编写一个函数,但它没有按照我的预期工作。 该函数应该接受一个像
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
***编辑得更加集中和清晰
我不确定节点应该是什么,但我猜你想要做的是从嵌套的整数列表创建一个整数列表。如果是这样,这是我认为效果很好的代码:
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
希望对你有帮助
保罗
尝试填写您未提供的代码,这大概是您想要做的事情:
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]
>
这是我将链接列表转换为常规列表的代码。这段代码主要适用于 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)