class Listnode: def __init__(self,val = 0,next = None): self.val = val self.next = next class MyLinkedList(): def __init__(self): self.dummyHead = Listnode() self.size = 0 def get(self,index): self.dummyHead = self.dummyHead.next for i in range(index): self.dummyHead = self.dummyHead.next return self.dummyHead.val def addAtHead(self,val): new_node = Listnode(val,None) new_node.next = self.dummyHead self.size +=1 """ dummyHead.next = Listnode(val,dummyHead.next) """ def addAtTail(self,val:int)->None: current = self.dummyHead.next while current: current = current.next #current.next = Listnode(val) self.size +=1 def addAtIndex(self,val:int,index:int)->None: current = self.dummyHead.next for i in range(index-1): current = current.next current.next = Listnode(val,current.next) def deleteAtIndex(self,index): current = dummyHead.next for i in range(index-1): current = current.next current.next = current.next.next #输入["MyLinkedList", "addAtHead", "addAtTail", "addAtIndex", "get", "deleteAtIndex", "get"][[], [1], [3], [1, 2], [1], [1], [1]] #输出[null, null, null, null, 2, null, 3] obj = MyLinkedList() obj.addAtHead(1) obj.addAtTail(3) obj.addAtIndex(1,2) param_1 = obj.get(1) obj.deleteAtIndex(1) param_2 = obj.get(1) print(param_1,param_2) 报错'NoneType' object has no attribute 'next'为什么
时间: 2024-01-13 16:05:49 浏览: 44
在addAtTail方法中,当current遍历到链表最后一个节点时,current指向None,而在下一行代码中,current.next是NoneType,因此无法继续执行current.next = Listnode(val)的操作,导致出错。解决方法是在while循环中,将current指向最后一个节点,再执行current.next = Listnode(val)的操作。修改后的代码如下:
```
def addAtTail(self,val:int)->None:
current = self.dummyHead
while current.next:
current = current.next
current.next = Listnode(val,None)
self.size += 1
```
相关问题
解释代码:class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next
这段代码定义了一个名为 ListNode 的类,该类具有两个属性:val 和 next。其中,val 表示节点的值,next 表示指向下一个节点的指针。在类的初始化函数 __init__ 中,可以传入一个默认值 val=0 和一个默认的下一个节点 next=None。如果没有传入这些参数,则会使用默认值。
class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next是什么意思?
这是Python中定义一个链表节点类的代码。该类包含两个属性:val和next。其中val表示节点的值,next表示指向下一个节点的指针。在该类中,__init__是一个特殊的方法,用于初始化类的实例。当创建一个新的节点时,可以传入一个值val和一个指向下一个节点的指针next,如果不传入任何参数,则默认为0和None。