基本概念:
定义:
栈(Stack)只允许在一端进行插入或删除操作的线性表
基本操作:
- 初始化:初始化一个空栈
- 判空:判断一个栈是否为空,若栈空返回true,否则返回 false;
- 进栈:若栈未满,将 X 插入使之成为新的栈顶元素
- 出栈:若栈非空,则弹出栈顶元素,并用 X 返回
- 读取:若栈非空,则用 X 返回栈顶元素
- 销毁栈:释放栈所占用的内存空间
存储结构:
顺序存储:
用顺序表存储的栈
栈空条件:S.top==-1;
栈长条件:s.top+1;
栈满条件:S.top==MaxSize-1;
判断栈空:
进栈:
出栈:
读出栈顶元素:
共享栈:
链式存储:
链栈:采用链式存储的栈
链栈的基本操作与单链表一直
栈的应用:
括号匹配:
表达式求值:
前缀表达式:
运算符提前的表达式
中缀表达式
正常的表达式
后缀表达式
运算符置后的表达式
转化思想:
递归:
若在一个函数,过程或数据结构的定义中又应用了它自身,则称它为递归定义的,简称递归