Python 这种链表实现有什么问题?
运行脚本会产生以下错误:Python 这种链表实现有什么问题?,python,singly-linked-list,attributeerror,Python,Singly Linked List,Attributeerror,运行脚本会产生以下错误: Traceback (most recent call last): File "D:/PycharmProjects/GeeksforGeeks/Linked List/Insertion of Nodes in LinkedList.py", line 49, in <module> llist.printList() File "D:/PycharmProjects/GeeksforGeeks/Linked Li
Traceback (most recent call last):
File "D:/PycharmProjects/GeeksforGeeks/Linked List/Insertion of Nodes in LinkedList.py", line 49, in <module>
llist.printList()
File "D:/PycharmProjects/GeeksforGeeks/Linked List/Insertion of Nodes in LinkedList.py", line 39, in printList
AttributeError:“int”对象没有属性“data”
我的代码是:-
在您的方法
append
,last.next
应该是new\u节点
class Node:
def __init__(self,data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def push(self,new_data):
new_node = Node(new_data)
new_node.next = self.head
self.head = new_node
def insertAfter(self,prev_node,new_data):
if prev_node is None:
return
new_node = Node(new_data)
new_node.next = prev_node.next
prev_node.next = new_node
def append(self,new_data):
new_node = Node(new_data)
if self.head is None:
self.head = new_node
return
last = self.head
while (last.next):
last = last.next
last.next = new_node
def printList(self):
temp = self.head
while (temp):
print(temp.data,end=' ')
temp = temp.next
if __name__ == '__main__':
llist = LinkedList()
llist.append(6)
llist.push(7)
llist.push(1)
llist.append(4)
llist.insertAfter(llist.head.next,8)
llist.printList()
输出:
1 7 8 6 4
append
函数中有一个错误:
def-append(自身、新数据):
新节点=节点(新数据)
如果self.head为无:
self.head=新节点
返回
last=self.head
而last.next:
最后一个
last.next=new_node#不应是新的_数据
append中的最后一行:“Last.next=new_data”您正在使最后一个节点中的next
链接指向数据,而不是包含数据的节点Thank You@bigbounty
class Node:
def __init__(self,data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def push(self,new_data):
new_node = Node(new_data)
new_node.next = self.head
self.head = new_node
def insertAfter(self,prev_node,new_data):
if prev_node is None:
return
new_node = Node(new_data)
new_node.next = prev_node.next
prev_node.next = new_node
def append(self,new_data):
new_node = Node(new_data)
if self.head is None:
self.head = new_node
return
last = self.head
while (last.next):
last = last.next
last.next = new_node
def printList(self):
temp = self.head
while (temp):
print(temp.data,end=' ')
temp = temp.next
if __name__ == '__main__':
llist = LinkedList()
llist.append(6)
llist.push(7)
llist.push(1)
llist.append(4)
llist.insertAfter(llist.head.next,8)
llist.printList()
1 7 8 6 4