中缀表达式转后缀表达式

  中缀表达式转后缀表达式的目的:用来表达式求值,借助stack(栈)来实现。

  符号的入栈出栈操作有以下几个原则

  ① 操作数——输出。

  ② 空栈——运算符入栈。

  ③ 左括号——入栈。

  ④ 右括号——出栈until弹出左括号。

  ⑤ 加减乘除——弹出所有优先级大于或者等于该运算符的栈顶元素,再将该运算符入栈

  ⑥ 输入结束——弹出栈中剩余元素。

  手写了一个例子:中缀表达式:a+b*c+(d*e+f)*g变后缀表达式:abc*+de*f+g*+

  得到后缀表达式后,我们建一个空栈用来帮助计算。我们就假设例子 abc*+de*f+g*+ 中的 a = 1、b = 2、c = 3、d = 4、e = 5、f = 6、g = 7 吧。

  从左到右扫描后缀表达式,遇到操作数,则进栈;遇到运算符,则从栈中弹出两个元素,计算:新操作数second弹出 运算符 first弹出。然后把这个新操作数进栈。until扫描结束

  最终,栈中唯一的最新的操作数,即计算结果

  具体实现,在另一篇文章有道题会提到,待会儿补个链接。

  https://www.cnblogs.com/cruelty_angel/p/13976919.html。见HDU 1237

原文地址:https://www.cnblogs.com/cruelty_angel/p/14017129.html