1.链式描述概述
- 线性表的元素在内存中的存储位置是随机的
- 每一个元素都有一个明确的指针指向下一个元素的位置(即地址)
- 每一个数据元素都包括:数据域和指针域(指向下一个元素的位置)
-
避免了顺序存储结构线性表在插入和删除元素时需要移动大量元素的问题。
2、链式存储的逻辑结构
基于链式存储结构的线性表中,每个节点都包含数据域和指针域。
- 数据域:存储数据元素本身
- 指针域:存储相邻节点的地址
![](https://images2018.cnblogs.com/blog/1037399/201809/1037399-20180909230857655-2117262520.png)
note:专业术语的统一
顺序表: 基于顺序存储的线性表
链表: 基于链式存储结构的线性表,又包括
- 单链表: 每个节点只包含直接后继的地址信息
- 循环链表:单链表中的最后一个节点直接后继为第一个节点
- 双向链表:单链表中的节点包含直接前驱和后继的地址信息
3、链表中的基本概念
- 头结点 :链表中的辅助节点,包含指向第一个数据元素的指针
- 数据节点: 链表中代表数据元素的节点,表现形式为:数据元素和地址
- 尾节点 :链表中的最后一个数据节点,其所包含的地址信息为空。
![](https://images2018.cnblogs.com/blog/1037399/201809/1037399-20180909231354539-351202178.png)
5、单链表中的内部结构
(1)头结点在单链表中的作用
- 辅助数据元素的定位
- 方便数据插入和删除
- 头结点不存储实际的数据
(2)在目标位置处插入元素
- 从头节点处开始,通过当前位置的指针遍历定位到目标位置
- 从堆空间申请新的Node节点
- 执行插入的操作
(3)目标位置处删除数据元素
- 从头节点处开始,通过当前位置的指针移动遍历定位到目标位置
- toDel指针指向需要删除的节点
- 执行删除操作如下的
6、 小结
- 链表中的数据元素在物理内存中无相邻关系
- 链表中的节点都包含数据域和指针域
- 头结点用于辅助数据元素的定位,方便插入和删除操作
- 插入和删除操作需要保证链表的完整性