我试图找出将列表转换为链表的方法。我已经有一个链接类,但我想弄清楚如何将列表转换为链表,例如:
def list_to_link(lst):
"""Takes a Python list and returns a Link with the same elements.
>>> link = list_to_link([1, 2, 3])
>>> print_link(link)
<1 2 3>
"""
class Link:
empty = ()
def __init__(self, first, rest=empty):
assert rest is Link.empty or isinstance(rest, Link)
self.first = first
self.rest = rest
def print_link(link):
"""Print elements of a linked list link."""
>>> link = Link(1, Link(2, Link(3)))
>>> print_link(link)
<1 2 3>
>>> link1 = Link(1, Link(Link(2), Link(3)))
>>> print_link(link1)
<1 <2> 3>
>>> link1 = Link(3, Link(Link(4), Link(5, Link(6))))
>>> print_link(link1)
<3 <4> 5 6>
"""
print('<' +helper(link).rstrip() +'>')
原文由 d‘chang 发布,翻译遵循 CC BY-SA 4.0 许可协议
Matt 的回答很好,但它超出了上述问题中描述的函数原型的约束。
阅读抽象/原型,问题的创建者似乎想用递归/动态编程方法来解决这个问题。这是一个非常标准的递归算法介绍。它更多的是了解如何编写优雅的递归代码,而不是在 Python 中创建链表(不是很有用或不常见)。
这是我想出的解决方案。试试看: