Nonetype 在链表中没有属性"next"



我卡住了,我看不出我的代码有什么问题。 这是:

class Node :
def __init__(self,data=0,next=None):
self.data = data
self.next = next
class LinkedList: 
def __init__(self,head=None):
self.head = head
def append(self,data):
new_Node = Node(data)
if (self.head):
cons = self.head
while(cons):
cons = cons.next
cons.next = new_Node  
else:
self.head = new_Node
def printt(self):
cons = self.head
while(cons):
print(cons.data)
cons = cons.next
Q = LinkedList()
Q.append(3)
Q.append(4)
Q.printt()

错误消息是

Traceback (most recent call last):
File "/tmp/sessions/18c2fb2c9abeb710/main.py", line 26, in <module>
Q.append(4)
File "/tmp/sessions/18c2fb2c9abeb710/main.py", line 16, in append
cons.next = new_Node  
AttributeError: 'NoneType' object has no attribute 'next' 

我试图修复错误,但未能解决。 请问你能帮忙吗?

您在以下行中遇到错误:

while(cons):

cons.next为"无"时,您必须停止。在您的情况下,您的代码将运行cons直到None。然后在下一行,你有语句cons.next = new_Node,它基本上检查None.next,从而检查错误。

因此,请使用cons.next而不仅仅是cons。以下内容将正常工作 -

class Node :
def __init__(self,data=0,next=None):
self.data = data
self.next = next
class LinkedList: 
def __init__(self,head=None):
self.head = head
def append(self,data):
new_Node = Node(data)
if (self.head):
cons = self.head
while(cons.next):
cons = cons.next
cons.next = new_Node  
else:
self.head = new_Node
def printt(self):
cons = self.head
while(cons):
print(cons.data)
cons = cons.next
Q = LinkedList()
Q.append(3)
Q.append(4)
Q.printt()

您所需要的只是更改行:

while(cons):

自-

while(cons.next):

因为否则,当您离开循环时,cons已经None

相关内容

  • 没有找到相关文章

最新更新