news 2026/5/22 19:15:19

双向链表的结点插入

作者头像

张小明

前端开发工程师

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/5/22 2:58:44

69、深入了解Windows Intune与组策略的协同应用

深入了解Windows Intune与组策略的协同应用 1. Windows Intune入门 Windows Intune的使用主要围绕两个核心方面:组的设置以及其他操作。一旦完成组的定义,Windows Intune的其他功能就能顺利开展。鉴于其功能丰富,这里着重介绍设置组和制定策略这两部分内容。当然,Windows…

作者头像 李华
网站建设 2026/5/21 0:11:20

算法讲解12:高精度加减法

前言&#xff1a;众所周知&#xff0c;我们在处理一个整数时&#xff0c;一般用int[-2^31,2^31-1],或者long[-2^63,2^63-1],但即使这样也有更大的数&#xff0c;所以我们要将整数转化为字符的形式&#xff0c;那么这里补充字符的比较原则&#xff1a;abc<acb //同位数&…

作者头像 李华
网站建设 2026/5/20 17:15:33

2026物联网技术大专生,想找好工作需要考哪些证书?

&#x1f4a5;对大专生而言&#xff0c;学历不是短板&#xff0c;精准考取 “基础必备 核心进阶 拓展深耕” 的证书组合&#xff0c;尤其是以 CDA 数据分析师证书为核心的技能叠加&#xff0c;能快速构建差异化竞争力&#xff0c;直达物联网工程师、数据运营专员、平台开发助…

作者头像 李华
网站建设 2026/5/20 11:56:17

LangFlow部署指南:三步完成私有化AI工作流平台搭建

LangFlow 部署实战&#xff1a;十分钟搭建私有化 AI 工作流平台 在企业加速拥抱大模型的今天&#xff0c;一个现实问题摆在面前&#xff1a;如何让非算法背景的团队也能快速验证 AI 创意&#xff1f;传统的开发模式要求写代码、搭环境、调接口&#xff0c;周期动辄数周。而当业…

作者头像 李华
网站建设 2026/5/22 2:58:37

LangFlow绩效考核评语生成辅助

LangFlow绩效考核评语生成辅助 在企业人力资源管理中&#xff0c;每年一度的绩效考核总是伴随着大量重复而细致的文字工作。尤其是撰写员工评语——既要体现个性化表现&#xff0c;又要保持语言的专业与得体&#xff0c;还要确保跨团队评价标准的一致性。对于HR来说&#xff0c…

作者头像 李华
网站建设 2026/5/23 4:50:11

PCB生产流程中阻抗控制的设计配合要点

高速PCB设计的“生死线”&#xff1a;阻抗控制如何靠设计与制造协同落地&#xff1f;你有没有遇到过这样的场景&#xff1f;一块精心设计的高速主板&#xff0c;原理图无误、布局合理、电源干净&#xff0c;可回板后就是跑不起来PCIe链路&#xff0c;或者DDR始终无法稳定在标称…

作者头像 李华