尝试实现双向链表remove方法时遇到的问题

问题遇到的现象和发生背景

刚刚开始学习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会报错,请问这样可以吗

这样写肯定是会输出被“删除”的结点
因为你所谓的“删除”是你的在逻辑上把它删了,并没有回收它的内存
而如果你让next的prev指向None,也肯定是报错,因为None没有data

                if cur == self.head:
                    self.head = cur.next
                    # cur.next.prev = None
                    print(cur.next.prev.data)

此处代码并未将cur的next的pre修改,所以2依然指向被“删除”的1