You need to enable JavaScript to run this app. 单链表添加节点的时间复杂度:指定操作是O(n)还是O(1)?
优惠活动
大模型
产品
解决方案
定价
更多

单链表添加节点的时间复杂度:指定操作是O(n)还是O(1)?

单链表第10个节点后插入操作的时间复杂度解答

结论先行

该操作的最坏时间复杂度为固定常数级,属于O(1),不属于O(n)。

具体推导过程

我们分两种常见的调用场景展开说明:

  • 场景1:未提前缓存第10个节点的指针,只能从头节点开始遍历查找
    单链表的遍历规则是只能从头部节点依次向后访问,要找到第10个节点只需要固定遍历9次即可定位,后续插入节点的操作只需修改两个节点的next指针,耗时固定。
    注意:这里的遍历次数是固定常数10,和单链表的总长度n没有关联,不管单链表总长度是10还是10^8,整个插入操作的耗时都不会随n的增长而变大。
  • 场景2:已提前持有第10个节点的引用
    这种情况下不需要执行遍历操作,直接修改两个节点的指针即可完成插入,耗时也是固定常数。

常见误区说明

很多人会误以为单链表的任意位置插入都是O(n)复杂度,这个结论的前提是「插入位置的序号k是和n强相关的变量」,比如要求在倒数第k个节点后插入、或者在第n/2个节点后插入,此时遍历次数会随n线性增长,才属于O(n)。而本题中插入位置固定在第10个节点之后,遍历次数是和n无关的常数,因此复杂度为O(1)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 00:51:00