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

Python链表按索引删除节点功能失效,请求技术排查

问题分析与解决

你的链表删除节点功能失效的核心问题出在delete函数的else分支里:

current.next = current.next

这行代码等于什么都没做——你只是把current.next重新赋值给了它自己,完全没有跳过要删除的节点。正确的写法应该是让current.next指向被删除节点的下一个节点,也就是:

current.next = current.next.next

修正后的完整delete函数

def delete(self, index):
    # 先处理索引越界的情况,避免报错
    if index < 0 or index >= self.size:
        raise IndexError("Index out of bounds")
    
    if index == 0:
        self.head = self.head.next
    else:
        current = self.head
        for i in range(index-1):
            current = current.next
        # 跳过目标节点,指向它的下一个节点
        current.next = current.next.next
    self.size -= 1

补充说明

  1. 原代码没有处理索引越界的情况,如果传入的index大于等于链表长度或者小于0,会导致current.next访问None的属性,直接抛出异常。上面的修正代码增加了越界检查,让错误更可控。
  2. 当删除最后一个节点时,current.next.next就是None,这正好符合需求——把倒数第二个节点的next设为None,完成尾节点删除。

测试修正后的代码,执行你的调用逻辑就能得到预期输出:

4 -> 1 -> 2
4 -> 2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:01:02