You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LinkedDeque的remove_rear函数异常:返回值错误且尾节点未正确移除

问题分析与修复方案

存在的错误点

  • 未定义变量错误:elif self._length==1分支中,temp未初始化就赋值给self._rear,会直接抛出NameError,且完全没有处理长度为1时的尾节点移除逻辑。
  • 遍历逻辑错误:else分支的循环最终让temp指向了原尾节点,而非倒数第二个节点。此时设置self._rear=temp等于没更新尾节点,原尾节点自然不会被移除,get_rear()返回的还是旧值。

修复后的代码

def remove_rear(self):
    # 空链表直接返回None
    if self._length == 0:
        return None
    # 处理长度为1的情况
    elif self._length == 1:
        rear_data = self._rear.get_data()
        self._front = None
        self._rear = None
        self._length = 0
        return rear_data
    # 处理长度大于1的情况
    else:
        temp = self._front
        # 遍历找到倒数第二个节点
        while temp.get_next() != self._rear:
            temp = temp.get_next()
        # 保存原尾节点数据
        rear_data = self._rear.get_data()
        # 更新尾节点并断开原尾节点的连接
        self._rear = temp
        temp.set_next(None)
        self._length -= 1
        return rear_data

修复说明

  • 补全空链表的判断,避免逻辑漏洞。
  • 长度为1时,正确保存原尾节点数据,重置链表头尾指针并更新长度,确保链表清空。
  • 调整遍历逻辑,直接通过temp.get_next() != self._rear定位到倒数第二个节点,无需额外变量,逻辑更清晰准确。
  • 正确保存并返回原尾节点的数据,同时断开原尾节点的引用,确保其被有效移除。

内容的提问来源于stack exchange,提问作者not_jena

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 20:32:42