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

单链表删除元素代码无法删除索引0位置节点,需要如何修改?

单链表索引0节点删除问题修复方案

问题根因

你当前的代码逻辑是通过定位待删除节点的前驱节点,修改前驱节点的next指针完成删除,而索引为0的头节点不存在前驱节点,现有循环判断条件(currentIndex + 1) == index最小匹配的index是1,完全覆盖不到index=0的场景。

调整步骤

只需要在原有逻辑之前新增头节点的特殊判断分支即可:

  1. 先做基础合法性校验,避免空指针或非法索引
  2. 单独判断如果待删除索引为0,直接修改头节点指向,完成删除
  3. 原有处理非0索引的逻辑保持不变即可

修改后完整代码

// 前置合法性校验:索引不能小于0,不能大于等于链表总长度
if (index < 0 || index >= size) {
    return false;
}
// 单独处理索引为0的头节点删除场景
if (index == 0) {
    head = head.next;
    size--;
    return true;
}
// 原有处理非0索引的逻辑保持不变
Node<E> current = head;
int currentIndex = 0;

while (current.next != null) {
    if ((currentIndex + 1) == index) {
        Node<E> newNext = current.next.next;
        current.setNext(newNext);
        size--;
        return true;
    }
    current = current.next;
    currentIndex++;
}
return false;

核心调整说明

  • 新增的index=0分支直接修改head引用指向原头节点的下一个节点,不需要遍历即可完成头节点删除
  • 新增的前置合法性校验可以避免index越界引发的空指针异常,同时兼容空链表的删除场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:45:03