中缀表达式转后缀表达式

用栈详细转换--做特定的题目:问转换后缀表达式中扫描到某个位置栈中的元素是什么

只用记住:有两个栈:opnd(操作数栈), optr(运算符栈)

1.若是'(' 则压入optr栈
2.遇到操作数, 压入opnd栈
3.若新的运算符的优先级高于optr的栈顶运算符,则将新运算符压入optr
若新的运算符的优先级低于optr的栈顶运算符,则弹出optr的栈顶运算符, 并从opnd栈中弹出两个操作数, 进行相应的算数运算后, 结果压入opnd栈中
4.若是')' 并且栈顶是'(' 则optr执行退栈操作,从而消去左右括号; 否则')' 被解释为优先级低于除'=' 之外的其他运算符,按3.中操作步骤进行

简易中缀转后缀

1.加括号: 将中缀表达式中所有的子式表达式按照计算规则用嵌套括号括起来.
2.移运算符: 把各个括号中表达式的运算符移动到括住该表达式的最内层括号外面
3.将括号去掉即可得到后缀表达式

ps.将括号往前移可得到前缀表达式

posted @ 2020-11-30 17:26  顾小朝  阅读(229)  评论(0编辑  收藏  举报