1.栈是一种限定性线性表
栈只允许在一个端点进行操作,称为栈顶,由栈顶指示器指针指向,其初值为-1.
2.结构
栈由一个存储元素的数组和栈顶指示器构成
顺序栈
进栈
若数组没有空间,再进行进栈操作则会发生上溢
若数组仍有空间: 1.栈顶指示器指针自增一 2.对数组中以当前栈顶指示器指针为下标的元素进行赋值
出栈
若栈区没有元素,再进行出栈操作则会发生下溢
若栈区有元素: 1.将栈顶元素储存至指定位置 2.栈顶指示器自减一
两栈共享的数据结构
一个栈自前向后储存,另一个自后向前储存;设置两个栈顶指示器指针;即入栈时,一个栈顶指示器指针自增一,另一个自减一,直至两栈顶指针相差一
定义:
1 |
|
初始化:
1 |
|
进栈:
1 |
|
出栈:
1 |
|
链栈
链栈的相关操作与顺序栈类似,入栈相当于头插入一个结点,出栈则相当于删除头结点所指向的结点。
中断
在计算机执行程序A的过程中,需要执行程序B,将程序A打断,此时需要构造一个栈架,将A程序的相关信息层层入栈,进行现场保护,执行完B程序后再依次出栈,恢复现场。
算数表达式
1.自左向右扫描,运算数进入运算数栈,运算符进入运算符栈 2.当前运算符优先级小于或等于运算符栈栈顶运算符时,运算符栈出栈一次,运算数栈出栈两次,计算,将得到的运算结果入栈运算数栈