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

Java自定义链表addFirst()方法添加多元素后size仅返回1问题求助

问题原因

你自定义的addFirst()方法头插逻辑完全错误,这是导致插入多元素后仅保留最后一个元素、size()返回1的核心原因。

原方法错误点拆解

走读三次插入流程你就能清晰看到问题:

  1. 第一次插入s2:此时head为null,直接将head指向s2节点,逻辑暂时正常
  2. 第二次插入s3:进入else分支
    • 新创建的s3节点next默认是null,执行newFirst = newFirst.getNext()后newFirst被赋值为null
    • 紧接着执行newFirst = head,newFirst又被覆盖为指向s2节点的引用
    • 最后执行head = newFirst.getNext(),s2节点的next是null,直接把head设为null,之前插入的s2节点彻底失联
  3. 第三次插入s1:此时head为null,直接将head指向s1节点,最终链表仅有s1一个节点,所以size()返回1

修复方案

头插法的核心逻辑只有两步:

  • 新节点的next指针指向当前链表的头节点
  • 将链表头节点更新为新节点
    该逻辑兼容链表为空的场景,不需要额外做null判断,修复后的代码如下:
public void addFirst(Type data) {
    Node<Type> newFirst = new Node<Type>(data);
    newFirst.setNext(head);
    head = newFirst;
}

修复后执行三次插入操作,链表结构会变成Summer → Winter → Spring,size()返回3符合预期。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:54:05