数据结构与算法2-3 线性顺序堆栈

单个数组堆栈

  • 典型结构:

    LIFO last in first out (先进后出,后进先出)


  • 后缀表达式:

    1. 后缀表达式,符号在数值之后,方便计算运行,看到符号就可以进行计算了。

    2. 将所有计算顺序按照括号括号之后,再把符号放到同级括号之后

      ​ 例: 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)

原文地址:https://www.cnblogs.com/guoshiyv/p/7071880.html