【问题标题】:Using recursion to create a linked list from a list使用递归从列表创建链表
【发布时间】:2013-11-09 21:14:20
【问题描述】:

如何使用递归来获取随机值列表并使其成为链表?其中每个值都是一个节点。截至目前,我已经尝试实现以下...

def pyListToMyList(pylst):
        lists = mkMyList()
        lists.head = pyListToMyListRec(pylst)
        return lists

def pyListToMyList(pylst):            
        if pylst:
                return mkEmptyNode()
        else:
                return mkNode(pylst[0], pyLstToMyListRec(pylst[1:]))

问题是 else 语句返回错误,指出索引超出范围。

【问题讨论】:

  • 我会编辑原帖

标签: python list linked-list


【解决方案1】:
def pyListToMyList(pylst):            
    if not pylst:
        return mkEmptyNode()
    else:
        return mkNode(pylst[0], pyLstToMyListRec(pylst[1:]))

编辑:虽然这是 O(n^2) 因为所有的列表复制。

我愿意

def pyListToMyList(pylst, i=0):
    if i > len(pylst):
        return mkEmptyNode()
    else:
        return mkNode(pylst[i], pyLstToMyListRec(pylst, i+1))

甚至更高效且不太可能溢出堆栈(尽管这不使用递归):

def pyListToMyList(pylst):
    lst = mkEmptyNode()
    for x in reversed(pylist):
        lst = mkNode(x, lst)
    return lst

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-08
    • 2021-03-11
    • 2012-08-23
    • 2021-05-18
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 1970-01-01
    相关资源
    最近更新 更多