栈的经典使用

逆波兰表达式法

    标准四则运算表达式—中缀表达式 例:9 + ( 3 - 1) * 3 + 10 / 2     

    计算机采用—后缀表达式 例:9 3 1 - 3 * + 10 / 2 +

中缀表达式转后缀表达式 9 + ( 3 - 1) * 3 + 10 / 2    -->  9 3 1 - 3 * + 10 / 2 +

        数字输出,运算符进栈,括号匹配出栈,运算符相遇输出优先级高的(先输出运算符后的数字)

栈的经典使用

数字输出,运算符进栈  9 + ( 3 - 1) * 3 + 10 / 2   -->  ( 3 - 1) * 3 + 10 / 2  输出:9

栈的经典使用

运算符进栈 ( 3 - 1) * 3 + 10 / 2  --> ) * 3 + 10 / 2  输出:9 3 1

栈的经典使用

括号匹配出栈:  ) * 3 + 10 / 2  -->  * 3 + 10 / 2      “ * ”进栈,先输出“ * ”后面的3: * 3 + 10 / 2   -->  + 10 / 2 

            输出:9 3 1 - 3

栈的经典使用

运算符相遇输出优先级高的 栈顶“+”优先级比“ * ”优先级低,“ * ”出栈," + "进栈然后出栈,10出栈,“ / ”进栈输出2 : 

                                + 10 / 2  -->  输出完     输出:9 3 1 - 3 * + 10 2

栈的经典使用

栈顶“+”优先级比“ / ”优先级低,“ / ”出栈,最后" + "出栈   输出:9 3 1 - 3 * + 10 2 / 

后缀表达式计算:

   计算方法:9 3 1 - 3 * + 10 2 / + ,表达式从左至右挨个进栈 9 3 1,遇到符号弹出最进两个计算,栈底的放后面,如3 - 1 ,将计算结果2进栈,9 2 3 遇到符号2 3 出栈计算结果进栈,9 6 。。。 

栈的经典使用

    9 3 1 - 3 * + 10 2 / +
    9 2 3 * + 10 2 / +
    9 6 + 10 2 / +
    15 10 2 / +
    15 5 +
    20