3.1 栈
3.1.1 栈的基本概念


基本操作

常考题型
判断出栈顺序是否合法
3.1.2 顺序栈
使用静态数组来实现的栈
初始化

push

pop

获取第一个元素的值

共享栈

3.1.3 链栈
与单链表一样的操作
3.2 队列
3.2.1 队列的定义

基本操作

3.2.2 队列的顺序实现
初始化


入队

这种方式实现的队列为循环队列: 

判空、满
(rear-front+maxsize)%maxsize,也可以使用一个值来存储队列的长度
3.2.3 队列的链式实现
受限的单链表
初始化

不带头 
插入

不带头 
出队

3.2.4 双端对列

3.3 栈的应用
3.3.1 括号匹配问题

3.3.2 运算表达式求值
中缀表达式的运算顺序可能是不唯一的 ,转化的后准表达式的顺序也可能是不唯一的
最好是“左优先”,尽可能的将左侧的运算符优先生效,进而确保算法的确定性。



算法实现

计算中缀表达式: 
3.3.3 递归调用


3.3.4 队列应用
树的层次遍历、图的广度优先遍历
3.4 特殊矩阵压缩存储
3.4.1 二维数组
行优先: 
列优先: 

3.4.2 对称矩阵

将在上三角区的aij转换为aji就可以实现访问上三角区的元素。
3.4.3 三角矩阵

可以将常量c存于数组末尾: 
3.4.4 三对角矩阵


3.4.5 稀疏矩阵

