3.1栈(stack)
3.1.1栈的基本概念
定义
 
基本操作
 
3.1.2 栈的顺序存储
初始化

进栈操作

出栈操作

读栈顶元素操作

另一种表示方式(top=0)

共享栈

总结

3.1.3栈的链式存储
进栈(头插法建立单链表)

出栈(对头结点的“后删”操作)

链栈的定义

总结

3.2队列(Queue)
3.2.1队列的基本概念
定义
队列(Queue)是只允许在一端进行插入,在另一端删除的线性表

基本操作

总结

3.2.2队列的顺序存储结构
初始化

入队操作(只能作为队尾插入)


出队操作

判断队列满/空的方法
  
3.2.3队列的链式存储结构
初始化(带头结点)

初始化(不带头结点)

入队(带头结点)

入队(不带&带头结点)

出队(带&不带头结点)

队满的条件

总结

3.2.4双端队列

考点:判断输出序列合法性

栈中合法的序列,双端队列中一定也合法
总结

3.3栈的应用
3.3.1栈在括号匹配中的应用
原理:遇到左括号就入栈;遇到右括号,就 “消耗”一个左括号。 
流程图

代码

总结

3.3.2栈在表达式求值中的应用
 //TODO
3.3.3栈在递归中的应用
函数调用背后的过程

栈在递归中的应用
  
总结

3.4特殊矩阵的压缩存储
数组的存储结构
 
- M行N列的二维数组 b[M][N] 中,若按行优先存储,则b[i][j] 的存储地址 = LOC + (i * N + j) * sizeof(ElemType);
- M行N列的二维数组 b[M][N] 中,若按列优先存储,则b[i][j] 的存储地址 = LOC + ( j * M+ i ) * sizeof(ElemType)
普通矩阵的存储
描述矩阵元素时,行、列号通常从 1 开始;而描述数组时通常下标从0开始(注意审题) 
对称矩阵的压缩存储
   
三角矩阵的压缩存储
 
稀疏矩阵的压缩存储

总结

3.5队列的应用
树的层次遍历

图的广度优先遍历

队列在操作系统中的应用

|