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
补充说明
- 原代码没有处理索引越界的情况,如果传入的index大于等于链表长度或者小于0,会导致
current.next访问None的属性,直接抛出异常。上面的修正代码增加了越界检查,让错误更可控。 - 当删除最后一个节点时,
current.next.next就是None,这正好符合需求——把倒数第二个节点的next设为None,完成尾节点删除。
测试修正后的代码,执行你的调用逻辑就能得到预期输出:
4 -> 1 -> 2 4 -> 2
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

