嵌入式 - 数据结构与算法:(1-4)数据结构 - 单链表的两个核心缺点(引入循环/双向链表)

上一篇 下一篇
单链表

单链表的两个核心缺点(引入循环/双向链表)

单链表、循环链表和双向链表的主要区别源于单链表的两个核心缺点:

  1. 只能单向遍历,无法反向访问

    单链表每个节点只有指向后继的指针,若要访问前驱节点,必须从头重新遍历,效率低。

    → 双向链表 通过增加一个指向前驱的指针(prev),支持前后双向遍历,插入/删除时可直接定位前驱,提升操作效率。

  2. 尾部与头部割裂,无法自然循环访问

    单链表尾节点指向 NULL,若需从尾回到头(如约瑟夫问题、轮询调度),必须额外判断并跳转。

    → 循环链表 将尾节点的 next 指回头节点(或首元素),形成闭环,任意位置均可遍历整个链表,简化循环场景逻辑。

双向循环链表 可以结合双向链表和循环链表两者的优势,但空间开销更大。

实际应用中,单链表结构简单、内存省,适合只在头部/已知位置操作的场景;

而需要频繁反向访问或循环处理时,则选用双向或循环结构。


相关推荐
启观川15 小时前
数据结构与算法 -第 3 章 常用算法-动态规划
数据结构·笔记·python·算法
wuminyu16 小时前
ForkJoinPool窃取线程在扫描其他WorkQueue时的随机采样算法与Phase线程挂起唤醒机制解析
java·linux·c语言·jvm·c++
longlongzihan16 小时前
链表找环:Floyd 判圈算法(LeetCode 141 & 142 )
c++·算法·leetcode·链表
Logic10116 小时前
C语言/数据结构欧几里得算法题解:长方形切割最大正方形——贪心划分计数
c语言·数据结构·算法·贪心算法·时间复杂度·空间复杂度·欧几里得算法
flinn_small18 小时前
三分算法:原理、实现与实战应用
数据结构·算法·三分
老王爱玩车19 小时前
文件操作从打开到缓冲区
c语言·开发语言·学习
INGNIGHT19 小时前
944 · 最大子矩阵(前缀和)
数据结构·c++·算法
All for pursuit.20 小时前
【动态规划-6】96.不同的二叉搜索树
数据结构·c++·算法·leetcode·动态规划
Zwawa20 小时前
传感器模块都在交出什么:从模拟电压到数字协议
c语言·单片机·嵌入式
信奥卷王20 小时前
[GESP202609 六级] 数组划分
数据结构·算法