文章目录
1. 线性表
1.1 线性表的实现
- 顺序表
- 链表
1.1.1 顺序表
1.1.2 链表
- 单链表(又称:单向表)
- 双链表
- 自由表
- 字典
1.1.2.1 单链表
包含一个存储元素的element域和一个指向下一节点的next域
带有表头结点的单链表:
1.1.2.2 双链表
1.1.2.3 可利用空间表
1.1.2.4 字典
2. 栈
- 限定仅在一段操作的线性表
- 实现方式:
- 顺序栈
- 链式栈
2.1 顺序栈
2.2 链式栈
不需要表头结点
2.3 栈的应用
2.3.1 栈实现递归
2.3.2 栈实现进制转换
2.3.3 栈实现平衡符号
2.3.4 栈实现逆波兰(RPN)计算器
"括号匹配, 中缀表达式转化为后缀表示式, 计算中缀表达式, 计算后缀表达式"完整代码
2.3.5 栈实现迷宫问题的解决
2.3.5 栈实现汉诺塔问题的解决
3. 队列
- 顺序队列
- 链式队列
基类:Queue
template<typename E>
class Queue{
private:
void operator=(const Queue&) {}
Queue(const Queue&) {} //拷贝构造函数
public:
Queue() {}
virtual ~Queue() {}
virtual void clear() = 0;
virtual void enqueue(const E&) = 0;
virtual E dequeue() = 0;
virtual const E& frontValue() const = 0;
virtual int length() const = 0;
};
3.1 顺序队列
3.2 循环队列
length = ( ( rear + maxSize ) - front + 1 ) % maxSize