经典指数          
原因
2099
浏览数
0
收藏数
 

中缀表达式(a+b)*c*(d-e/f) 转成后缀 1

     举报   纠错  
 
切换
1 个答案

中缀表达式转后缀表达式的方法: 1.遇到操作数:直接输出(添加到后缀表达式中)

2.栈为空时,遇到运算符,直接入栈 3.遇到左括号:将其入栈

4.遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,括号不输出。

5.遇到其他运算符:加减乘除:弹出所有优先级大于或者等于该运算符的栈顶元素,然后将该运算符入栈

6.最终将栈中的元素依次出栈,输出。 例如

(a+b)*c*(d-e/f) ->

ab+c*def/-*

遇到(: 进栈:

堆栈:(

遇到a:直接输出: 后缀表达式:a 堆栈:(

遇到+:堆栈:(并没有遇见),所以+入栈 后缀表达式:a

堆栈:(+

遇到b: 直接输出

后缀表达式:ab

堆栈:(+

遇到): 出栈,直到遇见左括号

后缀表达式:ab+

堆栈: 空

遇到*: 堆栈中元素为空,进栈

后缀表达式:ab+

堆栈:*

遇到c:直接输出

后缀表达式: ab+c

堆栈:*

遇到*: 和堆栈中符号优先级相同,弹出栈中的,将该*压入栈

后缀表达式:ab+c*

堆栈:*

遇到(: 进栈:

后缀表达式:ab+c*

堆栈:*(

遇到d:  直接输出

后缀表达式:ab+c*d

堆栈:*(

遇到-:  入栈

后缀表达式:ab+c*d

堆栈:*(-

遇到e:  直接输出

后缀表达式:ab+c*de

堆栈:*(-

遇到/:  高于-,入栈

后缀表达式:ab+c*de

堆栈:*(-/

遇到f:  直接输出

后缀表达式:ab+c*def

堆栈:*(-/

遇到): 出栈,直到左括号出栈

后缀表达式:ab+c*def/-

堆栈:*

遇到中缀表达式结束:弹出所有的运算符并输出 后缀表达式:ab+c*def/-* 堆栈:空

 
切换
撰写答案