目前正在自学/研究数据结构和算法。我带着这个教程来了。 我认真地听他的讲座。然而,当我将他的代码实现到我的 jupyter 笔记本时。我收到一条错误消息“AttributeError:类型对象‘节点’没有属性‘值’”
这是代码:
class Node:
def __init__(self, value= None):
self.value = value
self.next = None # -------------------------> O(1)
class SLinkedList:
def __init__(self):
self.head = None
self.tail = None
def __iter__(self):
node = self.head
while node:
yield node
node = node.next
# insert in linked list
def insertSLL(self, value, location):
newNode = Node(value)
if self.head is None:
self.head = newNode
self.tail = newNode
else:
if location == 0:
newNode.next = self.head
self.head = newNode
elif location == 1:
newNode.next = Node
self.tail.next = newNode
self.tail = newNode
else:
tempNode = self.head
index = 0
while index < location - 1:
tempNode = tempNode.next
index += 1
nextNode = tempNode.next
tempNode.next = newNode
newNode.next = nextNode
if tempNode == self.tail:
self.tail = newNode
singlyLinkedList = SLinkedList()
singlyLinkedList.insertSLL(1, 1)
singlyLinkedList.insertSLL(2, 1)
singlyLinkedList.insertSLL(3, 1)
singlyLinkedList.insertSLL(4, 1)
singlyLinkedList.insertSLL(0, 0)
singlyLinkedList.insertSLL(0, 3)
print([node.value for node in singlyLinkedList])
希望有人能解释一下为什么它现在不起作用。尊重岗位。我是编程世界的新人。
提前谢谢您。
解释哪里出了问题
您的问题在于这段代码:
elif location == 1:
newNode.next = Node
self.tail.next = newNode
self.tail = newNode
问题是您将
newNode.next
设置为 Node
,这是不正确的。在这种情况下,next
应保持未定义。
更正后的代码应如下所示:
elif location == 1:
self.tail.next = newNode
self.tail = newNode
这样,
newNode.next
就不会被错误分配,从而确保正确的链表行为。