news 2026/8/21 21:00:45

双向链表的结点插入

作者头像

张小明

前端开发工程师

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/8/21 22:16:54

树莓派实现人体感应报警系统的从零实现路径

树莓派 PIR传感器:手把手教你打造一个会“报警”的智能守卫你有没有过这样的经历?临时下楼取个快递,心里却总惦记着家里会不会进人;或者租的房子没有专业安防系统,总觉得少了点安全感。其实,用不到一顿饭的…

作者头像 李华
网站建设 2026/8/21 22:58:51

LangFlow公司年会节目策划建议生成

LangFlow公司年会节目策划建议生成 在企业年会筹备过程中,创意枯竭、流程繁琐、跨部门协作低效等问题长期困扰着组织者。一场“年年相似”的晚会不仅难以调动员工热情,反而可能削弱团队凝聚力。如何快速产出新颖、有趣且可落地的节目方案?传统…

作者头像 李华
网站建设 2026/8/20 23:36:41

W5500以太网模块RJ45接口电路从零实现

手把手教你从零搭建W5500以太网模块的RJ45接口电路 你有没有遇到过这样的情况:MCU代码写得滴水不漏,SPI通信也验证无误,可插上网线就是“Link不上”?或者勉强连上了,却隔几分钟就断一次,抓包一看全是重传&a…

作者头像 李华
网站建设 2026/8/21 22:17:04

LangFlow调度引擎详解:定时触发AI任务

LangFlow调度引擎详解:定时触发AI任务 在企业智能化转型的浪潮中,越来越多团队希望将大语言模型(LLM)能力嵌入日常运营流程——比如每天自动生成客户反馈摘要、每周输出舆情分析报告、每月汇总业务洞察。这类需求的核心特征是&…

作者头像 李华
网站建设 2026/8/21 10:54:08

LangFlow用户反馈:开发效率显著提升,适合新手和团队

LangFlow:让AI应用开发像搭积木一样简单 在大语言模型(LLM)席卷各行各业的今天,越来越多团队希望快速构建自己的智能客服、知识问答系统或自动化Agent。但现实往往令人望而却步——LangChain虽功能强大,API却繁多复杂…

作者头像 李华
网站建设 2026/8/21 14:38:12

Elasticsearch 8.x 面试题通俗解释:快速理解查询机制

Elasticsearch 8.x 查询机制深度解析:从面试题看搜索背后的真相你有没有遇到过这样的场景?面试官轻轻推了下眼镜,问:“Elasticsearch 是怎么做到几千万条数据里,一秒内返回结果的?”你心里一紧——倒排索引…

作者头像 李华