使用递归从lis创建链表

2024-04-26 21:34:39 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使用递归来获取随机值列表并使其成为链表?其中每个值都是一个节点。到目前为止,我已经尝试实现以下功能。。。你知道吗

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语句返回一个错误,指出索引超出范围。你知道吗


Tags: 功能列表returnif节点defheadelse
1条回答
网友
1楼 · 发布于 2024-04-26 21:34:39
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

相关问题 更多 >