目录
线性结构是数据结构中最基础的一种数据结构类型。其中典型的一种叫做“线性表”。
线性表
线性表(Linear List),由同类型数据元素构成有序序列的线性结构
- 表中元素个数称为线性表的长度
- 线性表没有元素时,称为空表
- 表的起始位置称为表头,表结束位置称为表尾
线性表的抽象数据类型描述
数据对象集:线性表是n(>=0)个元素构成的有序序列。
操作集:
- 初始化一个空线性表;
- 根据位序K,返回相应元素;
- 在线性表中查找X的第一次出现的位置;
- 在指定位置插入元素;
- 在指定位置删除元素;
- 返回线性表的长度;
顺序表-线性表的顺序存储结构
顺序表-插入元素
如需要在下标为i的位置插入元素
- 将i后面的所有元素向后挪一个位置,空出下标为i的位置
- 将元素插入下标为i的位置
顺序表-删除元素
如需要在下标为i的位置删除元素
- 从下标为i的位置开始,将后一个元素的值赋值给前一个元素
- 删除最后一个元素
单向链表-线性表的链式存储结构
链表,不要求逻辑上相邻的两个元素物理上也相邻;通过“链”建立起元素之间的逻辑关系。
插入和删除不需要挪动元素,只需要修改“链”。
无头节点的单向链表
有头节点的单向链表
- 头指针:链表的名字,仅仅是一个指针。
- 头节点:首元节点前设置的一个节点,可以不存储任何数据,指针域指向首元节点。
- 首元节点:链表中第一个元素节点。
- 在链表中,头节点并不是必须存在。
- 有了头节点,无论链表是否为空,链表的头指针都非空。
- 有了头节点,对于首元节点前的节点插入和删除操作就变得和其他节点一样。
单向链表-插入元素
如需要在下标为i的位置插入元素
- 下标 i-1 的元素的指针指向新插入的元素
- 新插入的元素的指针指向原下标为 i 的元素
单向链表-删除元素
如需要删除下标为i的元素