我卡住了,我看不出我的代码有什么问题。 这是:
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
。