作为元组的链表Python



给出一个连接列表,它被实现为一个元组(一个数字,链接到下面的一对),其中的值已经排序:x = (1, (3, (4, (7, (9, None))有必要实现一个函数来反转列表:呼叫示例:reverse((1,(3,(6,(8,无))))).结果:(8,(6,(3,(1),无))))

这就是我所做的,我知道这是不正确的,因为第一个元素将被加倍,然后

def reverse(linked_list: tuple):
last_pair = (linked_list[0], None)
while linked_list[1]:
new_list = (linked_list[0], last_pair)
return new_list
return reverse(linked_list[1])

结果如下:(1, (1, None))

我不知道如何以正确的方式做到这一点,在互联网上没有关于链表的元组

问题中的实现不计算传递给的参数的所有部分reverse()

这是一个实现你的目标的方法:

def reverse(t):
result = None
while True:
a, b = t
result = a, result
if (t := b) is None:
break
return result

print(reverse((1, (3, (6, (8, None))))))

输出:

(8, (6, (3, (1, None))))

如果您为"reverse"序列你也可以成功使用递归函数:

def reverse(linked_t: tuple, rev_seq=None):
while linked_t[1] is not None:
rev_seq = (linked_t[0], rev_seq)
return reverse(linked_t[1], rev_seq)
else:
return linked_t[0], rev_seq

print(reverse((1, (3, (6, (8, None))))))

(8, (6, (3, (1, None))))

最新更新