数据结构与算法2-3 线性顺序堆栈
单个数组堆栈
-
典型结构:
LIFO last in first out (先进后出,后进先出)
-
后缀表达式:
-
后缀表达式,符号在数值之后,方便计算运行,看到符号就可以进行计算了。
-
将所有计算顺序按照括号括号之后,再把符号放到同级括号之后
例: ab-c/d=((ab)-(c/d))=ab*cd/-
2.1 堆栈计算过程,首先遇到ab,存入栈中,然后遇到了,计算出a*b,存入堆栈,
2.2 然后遇到c,d,存入栈中,遇到/,计算出c/d,存入堆栈
2.3 最后堆栈中只有两个值a*b,c/d,然后遇到符号完成ab-c/d
-
单个数组的顺序存储堆栈代码如下:
# 两个堆栈共有一个数组,分别从数组两边一起开始存放
左边 -1表示空栈
右边 max表示空栈,即下标超出了数组的上界
满栈 左右两个堆栈都不用制定大小,只需共同占用整个数组即为满栈,即两堆栈的top相遇。
代码如下: ![](http://images2015.cnblogs.com/blog/1175415/201706/1175415-20170623223339460-494555403.png) ![](http://images2015.cnblogs.com/blog/1175415/201706/1175415-20170623223346304-1478419886.png)