news 2026/8/5 21:01:09

“链表按索引插入”在业界用的多吗?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
“链表按索引插入”在业界用的多吗?

在开源项目中(如 Linux Kernel, Redis, GNOME GLib 等)

1. 极少使用“按索引插入” (Insert at Index)

在高性能 C 编程中,链表主要用于O ( 1 ) O(1)O(1)的头插、尾插或特定节点前后的插入
如果你频繁需要“在第i ii个位置插入”,说明你选错了数据结构——这种场景应该使用数组 (Array)动态数组 (Vector)。链表的“按索引访问”是O ( N ) O(N)O(N)的,效率极低。

因此,很多开源库甚至不提供insert_at_index(i)这种 API。

2. Linux Kernel (list.h)

Linux 内核使用的是双向循环链表,它的设计极其精简,不存储长度

  • 越界判断:它没有“越界”的概念,因为它的 API 是list_add(new, head)(插到头)或list_add(new, prev_node)(插到某节点后)。
  • 设计哲学:这里的假设是调用者已经持有了一个有效的节点指针。
3. Redis (adlist.c)

Redis 实现了一个通用的双向链表,它的结构体明确包含了长度

// Redis 的 list 定义typedefstructlist{listNode*head;listNode*tail;unsignedlonglen;// <--- 这里保存了长度// ... 函数指针等 ...}list;
  • 做法:Redis 确实维护了长度。
  • 但注意:即使有了len,Redis 的核心 API 依然主要是listAddNodeHeadlistAddNodeTail。如果它要实现Index操作(如listIndex获取节点),它会利用len来决定是从头遍历更快还是从尾遍历更快(优化),但插入操作依然很少基于索引。

4. 总结建议

  1. 如果是刷题/简单练习:不要维护length。在遍历寻找插入点的while循环中判断p是否为NULL,以此作为越界判断。
  2. 如果是工程项目:建议定义一个struct List { Node* head; int len; }
    • 这样你可以在开头判断i > len
    • 这能让调用者快速获取链表长度(O(1)),非常实用。

只有当你将链表长度缓存在结构体中时,才能在函数开头判断越界。否则,必须通过遍历来检测。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/6 8:16:21

伦敦银站上历史高位,投资者的应对之道是什么?

历史是被用来打破的&#xff0c;当伦敦银价格强势站上历史高位&#xff0c;冲破了尘封多年的阻力线&#xff0c;一个新的时代或许正在开启。对于身处其中的投资者来说&#xff0c;这既是机遇的蓝海&#xff0c;也是未知的深渊。面对从未涉足的价格区域&#xff0c;传统的经验或…

作者头像 李华
网站建设 2026/8/6 18:25:26

vLLM镜像深度优化:支持GPTQ与AWQ量化,降低部署成本50%

vLLM镜像深度优化&#xff1a;支持GPTQ与AWQ量化&#xff0c;降低部署成本50% 在当前大模型应用爆发的背景下&#xff0c;企业面临的核心挑战不再是“有没有模型”&#xff0c;而是“能不能高效用好模型”。一个参数量达70亿甚至更大的语言模型&#xff0c;若以传统方式部署&am…

作者头像 李华
网站建设 2026/8/5 15:40:54

LobeChat能否运行TensorFlow.js模型?浏览器内推理尝试

LobeChat 能否运行 TensorFlow.js 模型&#xff1f;浏览器内推理尝试 在现代 AI 应用的演进中&#xff0c;一个越来越清晰的趋势是&#xff1a;智能正在从云端向终端迁移。用户不再满足于“发个问题、等几秒、收个答案”的交互模式&#xff0c;而是期望更实时、更私密、更具上下…

作者头像 李华
网站建设 2026/8/6 3:11:13

LobeChat插件系统全解析:如何扩展你的AI助手功能?

LobeChat插件系统全解析&#xff1a;如何扩展你的AI助手功能&#xff1f; 在今天的AI应用开发中&#xff0c;一个聊天界面是否“聪明”&#xff0c;早已不再只取决于背后的大模型能力。真正决定用户体验的&#xff0c;往往是前端能否灵活调用外部工具、实时获取数据、处理文件&…

作者头像 李华
网站建设 2026/8/4 8:01:54

当AI遇上售后服务:一场关于效率与体验的革命

从"人工排队"到"秒级响应"的蜕变 记得去年双十一&#xff0c;我朋友小张的电商店铺遭遇了一场"售后灾难"。订单量暴增300%&#xff0c;客服团队24小时轮班也应付不过来&#xff0c;客户投诉像雪花一样飞来。最夸张的时候&#xff0c;一个客户要…

作者头像 李华
网站建设 2026/8/5 22:35:19

Postman接口测试:如何导入 swagger 接口文档?

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快在使用 postman 做接口测试过程中&#xff0c;测试工程师会往界面中填入非常多的参数&#xff0c;包括 url 地址&#xff0c;请求方法&#xff0c;消息头和消息体等…

作者头像 李华