LinkedList实现中的属性错误



我试图在链表中实现insert方法,但我得到了属性错误"AttributeError:"LinkedList"对象没有属性"next"有人能帮忙吗?这是代码:

class Node():
def __init__(self, value):
self.value = value
self.next = None
class LinkedList():
def __init__(self):
self.head = None
self.tail = None
def append(self, value):
new_node = Node(value)
if self.head == None:
self.head = new_node
self.tail = self.head
self.length = 1
else:
self.tail.next = new_node
self.tail = new_node 
self.length += 1
def prepend(self,value):
new_node = Node(value)
if self.head == None:
self.head = new_node
self.tail = self.head
self.length += 1
else:
new_node.next = self.head 
self.head = new_node
self.length += 1
def insert(self, index, value): 
new_node = Node(value)
if index>=self.length:
self.append(value)
return
elif index < 1:
self.prepend(value)
return
else:
header = self.traverseToIndex(index-1)
pointer= self.traverseToIndex(index-1).next 
header.next = new_node 
new_node.next = pointer 
self.length += 1
def traverseToIndex(self, index):
counter = 0
current_node = self.head
while counter<=index:
current_node = self.next 
counter += 1
return current_node 

def printl(self):
temp = self.head
while temp != None:
print(temp.value , end = ' ')
temp = temp.next
print()
print('Length = '+str(self.length)) 
l = LinkedList()
l.append(10)
l.append(5)
l.append(6)
l.prepend(1)
l.insert(3,99)

Insert方法由于traverseToIndex((方法而出现问题。它告诉我current_node=current_node.next<--不具有属性";下一个";但是,由于创建的每个对象都有value和next,我不明白为什么currentnode没有next属性

您的self是LinkedList实例,没有next属性。所以改变:

current_node = self.next 

至:

current_node = current_node.next 

无关,但:

  • while条件应该是counter < index而不是counter <= index
  • 调用CCD_ 5两次是浪费时间。放弃第二个调用,改为执行pointer = header.next
  • 使用4个空格的缩进,而不是1个空格。很难发现printl方法中存在缩进错误,其中print()可能不应该是循环的一部分

最新更新