问题遇到的现象和发生背景
刚刚开始学习python,在尝试实现双向链表中,移除第一个值为data的节点这个方法时,当删除的节点为第一个节点,遇到了一些问题
遇到的现象和发生背景,请写出第一个错误信息
当删除第一个节点时,我需要先将头节点self.head指向第二个节点,但是否需要使第二个节点的prev指针指向None吗?因为我发现若不把第二个节点的prev指针指向None,代码还是正常运行的,不管是双向链表内的元素个数还是别的功能都是正常的,但我发现第二个节点的prev仍然指向了删除掉的第一个节点,这样是不是代表第一个节点没有被真正的删除,其数据还是保存在计算机里的呢
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
remove功能代码如下
def remove(self, data):
cur = self.head
while cur:
if cur.data == data:
# 判断是否为头节点
if cur == self.head:
self.head = cur.next
# cur.next.prev = None
print(cur.next.prev.data) # 我添加了这一行代码发现第二节点的prev仍然指向删除的节点
else:
cur.prev.next = cur.next
# 判断是否为尾节点
if cur.next:
cur.next.prev = cur.prev # 如果不是尾节点,才能执行这句
self.length -= 1
return 0
cur = cur.next
return -1
我的解答思路和尝试过的方法:
我想的是在判断是否为头节点时,再添加一个判断,即是否链表中只有一个节点,因为此时cur.next是None,如果使用cur.next.prev = None会报错,请问这样可以吗
”