news 2026/6/16 4:51:55

双向链表的结点插入

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
双向链表的结点插入

引入:

在单链表中,查找其直接后继的时间复杂度为O(1),而查找其直接前驱的时间复杂度为O(n)。

好比如下单链表:

若查找2的直接后继,记指针p指向值为2的节点(p->data=2),则2的直接后继是p->next;但若查找2的直接前驱时,无法通过p直接获取(单链表无前驱指针),需从头指针head开始遍历,直到找到节点q满足q->next == p(q即为p的前驱),遍历最坏需走n步,因此时间复杂度为O(n);故面对这种情况,为降低时间复杂度,我们引入双向链表。

双向链表简介:

第一个格子为prev(指向前一个结点),第二个格子为data(存放数据),第三个格子为next(指向后一个结点);

与单向链表不同的是,双向链表多了一个可以指向前一个结点的指针(即prev),假设图中头结点head后一个结点为q,则有q->prev = head;head->next = q;这样,链表就能通过next和prev两个指针向前或向后遍历,不再是单方向的流动。

双向链表的核心优势:

  • 查找直接前驱 / 后继的时间复杂度均为 O (1)(通过prev/next指针直接获取),解决了单链表查找前驱 O (n) 的问题;
  • 插入 / 删除操作时,无需像单链表那样从头遍历找前驱节点,仅需通过prev指针直接定位,操作效率提升;
  • 注意:双向链表的代价是每个节点多占用一个指针的内存空间(空间换时间)。

在双向链表中,头插法的使用:

流程图:

在已知双向链表的基础上使用头插法,按如上图的步骤更改箭头的指向

核心代码及理解:

在双向链表中,尾插法的使用:

流程图:

第一步:将存放新数据的结点记为p,p->prev =tail(尾结点);

第二步:tail->next = p;将原来的尾结点的next指向新的尾结点new;

第三步:第三步:p->next = NULL(新节点作为新尾节点,后继指向NULL);

若为「双向循环链表」,第三步需改为p->next = L(头结点),同时L->prev = p(头结点的前驱指向新尾节点),维持循环结构。

核心代码及理解:

在双向链表中,指定位置插入节点的使用:

第一步:在双向链表中,指定位置插入(pos从1开始计数),优先找“前驱节点”(更符合操作习惯),遍历的终止条件是“找到第pos-1个节点”,且必须判断遍历过程中指针是否为空(避免pos超出链表长度)(下面的代码图展示的是前驱结点)

第二步:将数据e存放在新的结点q中

第三步:改变prev和next的指向,让数据e被插入链表中

流程图:

核心代码:

通过遍历找到指定位置的前一个结点:

更改指针的指向,让新结点插入链表中来:

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

LangFlow与传统编码对比:哪种方式更适合AI原型开发?

LangFlow与传统编码对比:哪种方式更适合AI原型开发? 在大语言模型(LLM)席卷各行各业的今天,越来越多团队开始尝试构建智能客服、知识问答系统、自动化助手等AI应用。然而,一个现实问题摆在面前:…

作者头像 李华
网站建设 2026/6/15 1:55:13

LangFlow Syslog输出便于集中日志分析

LangFlow 日志集成 Syslog:构建可观察的 AI 工作流体系 在当今快速迭代的AI研发环境中,一个常见的痛点浮现出来:当团队使用可视化工具如 LangFlow 快速搭建智能体和链式流程时,系统的“黑盒感”也随之增强。尽管前端拖拽操作流畅直…

作者头像 李华
网站建设 2026/6/15 11:25:32

设备树在ARM64中的内存映射配置实战案例

设备树在ARM64中的内存映射配置实战案例从一个真实问题说起:为什么DMA总是失败?某天,你在调试一块基于飞腾FT-2000/4的嵌入式板卡,系统运行Linux 5.10,任务是实现高清音频回放。驱动写好了,DMA也配置完毕&a…

作者头像 李华
网站建设 2026/6/14 10:25:55

TI电源管理SDK项目应用完整示例

从零构建高可靠电源系统:TI SDK实战全解析你有没有遇到过这样的场景?系统上电瞬间,FPGA莫名其妙锁死;调试音频模块时底噪始终下不去;好不容易跑起来的多核处理器,一加载任务就重启……这些问题,…

作者头像 李华
网站建设 2026/6/15 20:39:39

LangFlow集成Hugging Face模型,拓展更多AI能力

LangFlow集成Hugging Face模型,拓展更多AI能力 在大语言模型(LLM)席卷各行各业的今天,越来越多团队希望快速构建智能对话系统、自动化内容生成流程或知识问答引擎。然而现实是:即便有了LangChain这样的强大框架&#…

作者头像 李华
网站建设 2026/6/14 8:16:16

LangFlow推荐信模板生成工具实现

LangFlow推荐信模板生成工具实现 在高校教师和企业主管的日常工作中,撰写推荐信是一项高频但耗时的任务。尤其当面对多位学生或候选人、需要提交英文申请材料时,如何在保证专业性和个性化的同时提升效率,成为了一个实际痛点。传统的做法是依赖…

作者头像 李华