向链接的lis末尾添加项的函数

2024-10-01 17:23:57 发布

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

一般来说,我不熟悉编程,刚刚开始使用python。我最近一直在学习链接列表,我在使用函数将项目添加到列表末尾时遇到了问题。下面列出的名为addtoail的函数不起作用,它给了我一个错误:TypeError:“NoneType”对象不支持项分配。任何帮助都将不胜感激,谢谢。在

def addToHead(myList, value):
    node = {}
    node['data'] = value
    node['next'] = myList
    return node

def addToTail(myList, value):
    ptr = myList
    while ptr != None:
         ptr = ptr['next']
    node = {}
    node['data'] = value
    node['next'] = None
    ptr['next'] = node 
    return myList

def printList(myList):
    ptr = myList
    while ptr != None:
        print(ptr['data'])
        ptr = ptr['next']
    print('None')

def createList(pythonList):
    linkedList = None
    for i in pythonList:
        linkedList = addToHead(linkedList, i)
    return linkedList



firstList = createList([5, 10, 15])
addToTail(firstList, 10)
printList(firstList)

Tags: 函数nonenode列表datareturnvaluedef
2条回答

问题是您的addToTail将始终将指针设为None,因为在while循环中,您一直在迭代,直到值为None为止。添加一个额外的变量来指向链接列表中的前一个元素-这样,您将得到列表中的最后一个值,而不是无。在

def addToTail(myList, value):
    ptr = myList
    prev = ptr
    while ptr != None:
         prev = ptr
         ptr = ptr['next']
    node = {}
    node['data'] = value
    node['next'] = None
    prev['next'] = node 
    return myList

您的问题在于addToTail()函数的这一部分:

ptr = myList
while ptr != None:
     ptr = ptr['next']

实际上,在没有下一个节点并且ptr被设置为None之前,您实际上是在循环。随后,当您试图用ptr['next'] = node分配节点时,显然会失败,因为您试图访问None,而不是尾部节点。你可以通过在作业前检查下一项来解决这个问题(保持你的风格):

^{pr2}$

相关问题 更多 >

    热门问题