中缀表达式转后缀表达式

转自:https://blog.csdn.net/iteye_4185/article/details/82574934

1.假定有中缀表达式1 + (( 2 + 3)* 4 ) – 5,请将它转化为后缀表达式。

方法一:利用表达式树

方法二:利用辅助栈

从左到右遍历中缀表达式的每个操作数和操作符。

当读到操作数时,立即把它输出,即成为后缀表达式的一部分;

若读到操作符,判断该符号与栈顶符号的优先级,若该符号优先级高于栈顶元素,则将该操作符入栈,否则就一次把栈中运算符弹出并加到后缀表达式尾端,直到遇到优先级低于该操作符的栈元素,然后把该操作符压入栈中。

如果遇到”(”,直接压入栈中,如果遇到一个”)”,那么就将栈元素弹出并加到后缀表达式尾端,但左右括号并不输出。最后,如果读到中缀表达式的尾端,将栈元素依次完全弹出并加到后缀表达式尾端。

上述链接中给出了图解。

224. 基本计算器,可练习。

 

中缀表达式转后缀表达式

上一篇:石头怪


下一篇:【高德地图API】从零开始学高德JS API(四)搜索服务