关键词: 链表的定义、链表的插入和删除操作
1. 链式存储的定义
为了表示每个数据元素与其直接后继元素之间的逻辑关系,数据元素除了存储本身的信息外,还需要存储其直接后继的信息。
基于链式存储结构的线性表中,每个结点都包含数据域和指针域。
- 数据域:存储数据元素本身
-
指针域:存储相邻结点的地址
2. 专业术语的统一
顺序表:基于顺序存储结构的线性表
链表:基于链式存储结构的线性表
1) 单链表: 每个结点只包含直接后继的地址信息
2) 循环链表: 单链表中的最后一个结点的直接后继为第一个结点
3) 双向链表:单链表中的结点包含直接前驱和后继的地址信息
3. 链表中的基本概念
- 头结点:链表中的辅助结点,包含指向第一个数据元素的指针
- 数据结点:链表中代表数据元素的结点,表现形式为:(数据元素, 地址)
- 尾结点: 链表中的最后一个数据结点,包含的地址信息为空
4. 单链表中的节点定义
5. 单链表中内部结构
头结点在单链表中的意义: 辅助数据元素的定位,方便插入和删除操作。因此,头结点不存储实际的数据元素。
6. 单链表的插入操作
1) 从头结点开始,通过current
指针定位到目标位置
2) 从堆空间申请新的Node
结点
3)执行操作:
node->value = e;
node->next = current->next;
current->next = node;
7. 单链表的删除操作
1) 从头结点开始,通过current
指针定位到目标位置
2) 使用toDel
指针指向需要删除的结点
3)执行操作
toDel = current->next;
current->next = toDel->next;
delete toDel;
8. 小结
- 链表中的数据元素在物理内存中无相邻关系
- 链表中的结点都包含数据域和指针域
- 头结点用于辅助数据元素的定位,方便插入和删除操作
- 插入和删除操作需要保证链表的完整性
声明:此文章仅是本人在学习狄泰学院《数据结构实战开发教程》所做的笔记,文章中包含狄泰软件资料内容,一切版权归狄泰软件所有!
实验环境:ubuntu10 + Qt Creator2.4.1 + Qt SDK 4.7.4