概念:一种数据结构,每个结点最多只有一个前驱结点和一个后继结点
类别:
- 顺序表(定长)
- 链表(变长)
- 栈(栈顶删除[弹栈],栈顶插入[压栈],后进先出[LIFO])
- 队列(队头删除[出队],队尾插入[入队],先进先出[FIFO])
线性表的抽象数据类型定义(C++):
1. template<class T>
2. class List{
3. void Clear(); //置空线性表
4. bool IsEmpty(); //线性表为空时,返回true
5. bool Append(const T value);
6. //在表尾添加元素value,表的长度增加1
7. bool Insert(const int p, const T value);
8. //在位置p插入元素valve,表的长度增加1
9. bool Delete(const int p);
10. //删除位置p上的元素,表的长度减1
11. bool getdValue(const int p, T & value);
12. //把位置p上的元素值返回到变量valve中
13. bool setValue(const int p, const T value);
14. //把位置p上的元素值修改为valve
15. bool getPos(int &p, const T value);
16. //把值为valve的元素位置返回到变量p中
17.
18. };
栈的抽象数据类型定义(C++):
1. template<class T>
2. class Stack{
3. public:
4. void Clear(); //清空栈
5. bool Push(const T item); //栈的压栈操作
6. bool Pop(T & item); //读取栈顶元素的值并删除
7. bool Top(T & item); //读取栈顶元素的值但不删除
8. bool IsEmpty(); //判断栈是否为空
9. bool IsFull(); //判断栈是否为满
10. };
注:顺序栈和链式栈中,top指示栈顶
队列的抽象数据类型定义(C++):
1. template<class T>
2. class Queue{
3. public:
4. void Clear(); //清空队列
5. bool EnQueue(const T item); //队列的入队操作
6. bool DeQueue(T & item); //读取队头元素并删除
7. bool getFront(); //读取队头元素但不删除
8. bool IsEmpty(); //判断队列是否为空
9. bool IsFull(); //判断队列是否为满
10. };
注:顺序队列中,front指示队头,rear指示队尾的下一个元素
递归:递归基础(结束条件)+递归规则(简单求解复杂),尾部递归是循环的变形,非尾部递归可用栈实现
字符串模式匹配:朴素的模式匹配、KMP模式匹配(预处理模式,分析字符分布,计算特征向量[子串的最大相同前缀子串和后缀子串长度])