线性表的基本概念
线性表及其逻辑结构
-
线性表的定义
具有相同数据类型的n个数据元素的有限序列。 -
线性表的抽象数据类型描述
线性表的顺序存储结构
- 顺序表
用一组地址连续的存储单元依次存储线性表中的数据元素,使得逻辑上相邻的两个元素在物理位置上也相邻。 - 顺序表的存储类型描述
- 顺序表的基本操作实现
-
初始动态分配语句
-
插入---- O ( n ) O(n) O(n)
-
删除---- O ( n ) O(n) O(n)
-
按值查找(顺序查找) ---- O ( n ) O(n) O(n)
-
线性表的链式存储结构
- 单链表
-
单链表的存储类型描述
-
单链表的基本操作实现
-
建立单链表---- O ( n ) O(n) O(n)
-
插入---- O ( n ) O(n) O(n)
-
删除---- O ( n ) O(n) O(n)
-
查找---- O ( n ) O(n) O(n)
-
-
- 双链表
-
双链表的存储类型描述
-
双链表的基本操作实现
-
插入---- O ( 1 ) O(1) O(1)
-
删除---- O ( 1 ) O(1) O(1)
-
-
- 循环链表
-
循环单链表
- 判空条件:
L->next=L
- 有时候仅设尾指针
| 可用来表示队列(在表头删除,在表尾插入)
- 判空条件:
-
循环双链表
- 判空条件:
L->prior==L && L->next==L
- 判空条件:
-
- 静态链表
-
静态链表的存储示意图
-
静态链表的存储类型描述
-
结束标志:
next==-1
-
线性表的应用
线性表的合并
- 假设利用两个线性表La和Lb分别表示两个集合A和B,现要求一个新的集合A=A∪B
- 算法实现
有序表的合并
-
已知线性表La和Lb中的数据元素按值非递减有序排列,现要求La和Lb归并为一个新的线性表Lc,且Lc中的数据元素仍按值非递减有序排列
-
算法实现
-
用顺序表实现---- O ( L i s t L e n g t h ( L a ) + L i s t L e n g t h ( L b ) ) O(ListLength(La)+ListLength(Lb)) O(ListLength(La)+ListLength(Lb))
-
用链表实现---- O ( L i s t L e n g t h ( L a ) + L i s t L e n g t h ( L b ) ) O(ListLength(La)+ListLength(Lb)) O(ListLength(La)+ListLength(Lb))
-
-
多项式运算
-
稀疏多项式运算
-
图书管理系统