前中后缀表达式小记

已知中缀表达式如a+b+ca(a+b)/e+f怎样求后缀表达式或前缀?

先确认一个点,如果是选择题,可以通过中缀表达式转后缀表达式时其操作数的相对顺序是不会发生改变的。

下面介绍的是使用辅助栈的方式的,如果遇到“(”直接入栈,如果是“)”就将栈元素弹出并加到后缀表达式尾端,但左右括号并不输出。

转化为后缀:从左到右遍历中缀表达式,遇到操作数,输出,遇到操作符,当前操作符的优先级大于栈顶操作符优先级,进栈,否则,弹出栈顶优先级大于等于当前操作符的操作符,当前操作符进栈。

转化为前缀:从右到左遍历中缀表达式,遇到操作数,输出,遇到操作符,当前操作符的优先级大于等于栈顶操作符优先级,进栈,否则,弹出栈顶优先级大于当前操作符的操作符,当前操作符进栈。

你可能感兴趣的:(大杂烩)