当前位置: 首页 > news >正文

数据结构中单链表与双链表

单链表与双向链表


一、单链表(Single Linked List)

1. 核心定义

单链表是线性表的链式存储结构,每个节点只包含两部分:

  • 数据域:存储节点的值(数据)
  • 后继指针域:存储下一个节点的内存地址
  • 最后一个节点的后继指针指向 NULL(空),表示链表结束

2. 节点结构(C/C++ 描述)

// 单链表节点
typedef struct Node {ElemType data;      // 数据域:存值struct Node *next;  // 指针域:存下一个节点的地址
} Node, *LinkList;

3. 核心特点

  1. 单向遍历:只能从头节点 → 尾节点依次访问,不能反向回溯
  2. 无前驱记录:节点不知道自己的上一个节点是谁
  3. 内存占用小:每个节点只存一个指针,空间开销更低
  4. 操作限制
    • 查找后继节点:O(1)
    • 查找前驱节点:O(n)(必须从头遍历)
    • 插入/删除:必须找到前驱节点才能操作

二、双向链表(Double Linked List)

1. 核心定义

双向链表在单链表基础上增加一个前驱指针,每个节点包含三部分:

  • 前驱指针域:存储上一个节点的内存地址
  • 数据域:存储节点的值
  • 后继指针域:存储下一个节点的内存地址
  • 头节点的前驱指针 = NULL,尾节点的后继指针 = NULL

2. 节点结构(C/C++ 描述)

// 双向链表节点
typedef struct DNode {ElemType data;      // 数据域:存值struct DNode *prior;// 前指针域:存上一个节点的地址struct DNode *next; // 后指针域:存下一个节点的地址
} DNode, *DLinkList;

3. 核心特点

  1. 双向遍历:可以从头→尾,也可以从尾→头遍历
  2. 自带前驱记录:每个节点都能直接找到上一个节点
  3. 内存占用稍大:每个节点多存一个指针
  4. 操作优势
    • 查找前驱/后继:都是 O(1)
    • 插入/删除更方便:已知当前节点即可完成操作,不用从头找前驱

三、单链表 VS 双向链表:详细对比表

对比维度 单链表 双向链表
节点组成 数据域 + 1个后继指针 数据域 + 前驱指针 + 后继指针
指针方向 单向(向后) 双向(向前+向后)
遍历方向 只能从头向尾遍历 从头向尾 + 从尾向头遍历
前驱查找 无法直接找,必须从头遍历 O(n) 直接获取前驱节点 O(1)
后继查找 直接获取后继节点 O(1) 直接获取后继节点 O(1)
插入/删除 必须找到前驱节点才能操作 已知当前节点即可完成操作
内存开销 更小(每个节点1个指针) 更大(每个节点2个指针)
实现复杂度 简单 稍复杂(需同时维护两个指针)
适用场景 数据量小、仅单向访问、追求省内存 需要频繁反向遍历、快速找前驱
典型用途 简单队列、单向链表实现 双向队列、LRU缓存、浏览器前进后退

四、总结

  1. 单链表:省空间、单向走、找前驱麻烦;
  2. 双向链表:多占点空间、双向走、操作更方便。

内容由豆包AI生成

http://www.jsqmd.com/news/613595/

相关文章:

  • 2026青海包车/租车游最新TOP8出炉:正规营运+0购物,游客避坑必看 - 深度智识库
  • SiameseUIE模型解释工具:LIME和SHAP应用实战
  • 终极指南:如何使用RPG Maker Decrypter轻松解密游戏资源
  • UE4SS终极指南:如何为UE4/UE5游戏创建强大的脚本系统和Mod开发平台
  • 微信图文编辑器封神榜!公众号编辑器哪个好用?2026年度评测,让创作翻倍 - 速递信息
  • 【AutoSAR】Dcm模块—DID(Data Identifier)详解:从原理到实战
  • 2026年4月目前靠谱的日本移民企业推荐,日本留学/赴日工作/日本移民,日本移民品牌选哪家 - 品牌推荐师
  • 从CAD到游戏路径:三次B样条‘反求’控制点到底在解决什么问题?
  • AI建模——AI生成3D内容算法产品介绍与模型免费下载
  • 3个核心突破:如何用MedSAM实现医学影像的精准三维分割
  • 使用Spring AI Alibaba构建智能体Agent倥
  • C++和OpenGL实现3D游戏编程【连载24】——父物体和子物体之间的坐标转换
  • 2026年国内家具品牌比较好的有哪些?最受欢迎国内十大家具超市品牌盘点 - 速递信息
  • AtCoder Beginner Contest 435
  • (六)以 WhaleStudio 三层开发管理框架为例,分享一套可落地的 DataOps 开发规范
  • Python 数据分析核心库:Pandas 与 NumPy 从入门到实战全指南(附电商用户分析完整代码)
  • ioquake3与原生Quake 3对比:20项技术改进与兼容性保障
  • 突破语言壁垒:重构多场景无缝翻译体验的跨语言工具
  • gitru:一个由 Rust 打造的零依赖 Git 提交信息校验工具蚕
  • PTC Creo/ Windchill高级模块许可证管理要点
  • 颠覆式媒体资源获取:猫抓插件全流程突破与实战指南
  • 突破虚时演化非酉限制:MLGO微算法科技发布可在现有量子计算机运行的变分量子模拟技术
  • 零基础掌握Browsershot:高效PHP网页转换工具实用指南
  • 终极文档下载指南:如何用kill-doc一键突破30+文库平台限制
  • 2026年广东白底青白月光手镯/高冰飘花手镯TOP10!佛山等地源头工厂性价比高口碑佳 - 十大品牌榜
  • KART-RERANK结合Typora构建智能知识管理系统的3步指南
  • 2026年稀有金属回收市场格局观察:技术壁垒与服务模式的分化 - 深度智识库
  • 2025届学术党必备的AI写作网站实测分析
  • python-操作符相关介绍(二)
  • 2026依索维尔玻璃棉卷毡优质供应商名录及性能对比 - 资讯焦点