中缀表达式转后缀表达式
中缀表达式转后缀表达式的目的:用来表达式求值,借助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