1. 存储结构
- 顺序表、链表
- 链表:单链表、循环链表、双向链表。
-
空间性能:
- 存储密度:顺序存储的存储密度=1,更优;链式存储的存储密度<1;
- 容量分配:顺序存储事先确定;链式存储动态改变、更优。
-
时间性能:
- 查找运算:顺序存储O(n/2),链式存储O(n/2);
- 读运算:顺序存储O(1)更优;链式存储O([n+1]/2),其中最好情况为1,最坏情况为n
- 插入运算:顺序存储O(n/2)最好情况为0,最坏情况为n;链式存储O(1)优。
- 删除运算:顺序存储O([n-1]/2),链式存储O(1)优。
-
插入删除操作:
- 顺序存储在插入元素前要移动元素挪出空的存储单元,再插入元素;删除元素同理。
- 链表的基本操作:单链表删除节点、单链表插入节点、双向链表删除节点、双向链表插入节点。
2. 栈和队列
- 栈:只允许在一端进行插入和删除操作
- 队列:先进先出的线性表,只允许在表的一端插入元素(队尾),在表的另一端删除元素(队头)
-
循环队列:
- 队空的条件:head = tail
- 队满的条件:(tail + 1)% size = head
3. 串
-
串:仅由字符组成的有限序列,取自范围受限的线性表。
- 空串:长度为0的串,不包含任何字符。
- 空格串:由一个或多个空格组成的串。
- 子串:空串是任意串的子串。
- 串相等:两个串长度相等且对应位置上的字符也相同。
- 串比较:两个串比较大小以字符的ASCII码值为依据(ASCII码值大,串大)
-
对串进行基本操作:
- 赋值操作:将串 t赋值给串s。
- 连接操作:将串t接续在串s的尾部,形成一个新串。
- 求串长:返回串的长度。
- 串比较:比较两个串的大小。
- 求子串:返回串s中从start开始的,长度为len的字符序列
-
串的存储结构:
- 串的顺序存储:定长存储结构。
- 串的链式存储:块链。 (子串的定位操作是串的模式匹配,子串也称模式串)
-
存储地址的计算:
- 一维数组:a[i]的存储地址为 a + i*len
- 二维数组a[m][n]:a[i][j]按行存储地址是a+(i*n+j)*len;按列存储地址a+(i+j*m)*len
4. 矩阵
稀疏矩阵:上三角矩阵和下三角矩阵
5.广义表
- 广义表:n个表元素组成的有限序列,线性表的推广。
- 记作LS=(a0,a1,...,an)LS是表名,n是广义表的长度(最外层包含的元素个数)递归定义的广义表的重数为表的深度,空表的深度为1
- 基本运算:取表头head(LS),取表尾tail(LS)