python - AttributeError: 'NoneType' 对象在插入双向链表时没有属性 'prev'
问题描述
我正在尝试学习有关数据结构和算法的udemy课程,因为我对此完全陌生,因此将不胜感激任何帮助,如果答案保持简单,那将非常有帮助。谢谢。我试着联系导师,但他没有回应。我自己认为这段代码没有问题,所以任何建议都会对我有很大帮助。
class Node:
def __init__(self,value=None):
self.value= value
self.next= None
self.prev = None
class DoublyLinkedList:
def __init__(self):
self.head = None
self.tail = None
def __iter__(self):
node = self.head
while node:
yield node
node = node.next
def createDLL(self,value):
newNode = Node(value)
newNode.next = None
newNode.prev = None
self.head = newNode
self.tail = newNode
def insert(self,value,location):
if self.head is None:
print("Linked list does not exist")
else:
newNode = Node(value)
if location == 0:
newNode.prev = None
newNode.next = self.head
self.head.prev = newNode
self.head = newNode
elif location == 1:
newNode.next = None
newNode.next = self.head
self.head.prev = newNode
self.head = newNode
else:
tempNode = self.head
index = 0
while index < location - 1:
tempNode = tempNode.next
index += 1
newNode.next = tempNode.next
newNode.prev = tempNode
newNode.next.prev = newNode
tempNode.next = newNode
doublyLL = DoublyLinkedList()
doublyLL.createDLL(1)
doublyLL.insert(2,1)
doublyLL.insert(3,2)
我正在尝试插入一个新节点,但它不断返回此错误:
Traceback (most recent call last):
File "C:\Users\User\Documents\doublylinkedlist.py", line 66, in <module>
doublyLL.insert(3,2)
File "C:\Users\User\Documents\doublylinkedlist.py", line 55, in insert
newNode.next.prev = newNode
AttributeError: 'NoneType' object has no attribute 'prev'
我正在尝试学习有关数据结构和算法的udemy课程,因为我对此完全陌生,因此将不胜感激任何帮助,如果答案保持简单,那将非常有帮助。谢谢
解决方案
你的else
条款需要更正。
此外,您确实不需要该elif
子句。该else
条款也应该能够涵盖这种情况。
因此,删除该elif
子句,并更正您的else
子句,如下所示:
else:
tempNode = self.head
index = 0
while index < location - 1:
tempNode = tempNode.next
index += 1
newNode.next = tempNode.next
newNode.prev = tempNode
if newNode.next:
newNode.next.prev = newNode
tempNode.next = newNode
推荐阅读
- javascript - 下拉帖子实时搜索,添加onclick重定向到帖子(php页面)
- git - 需要有关使用远程 git repo 的建议
- javascript - onMouseDown 事件后如何让 focus() 起作用?
- php - PHP 7.4 `proc_open` 对 `$cmd` 的数组参数做了什么转义?
- python - Selenium python get_attribute() 返回图像的实际数据而不是链接
- reactjs - 当文本字段没有值时,将 MUI TextField 标签保持在顶部
- flutter - Flutter 表单验证不起作用(_formKey.currentState.save())
- symfony - 如何在实体管理器事务中调度 symfony 事件
- java - 使用网格布局管理器的水平回收器视图中的项目对齐方式不正确
- javascript - 如何将猫鼬连接方法分离到另一个JS文件?