您的位置:首页 > 其它

中缀表达式转后缀表达式

2016-09-12 22:18 204 查看
1.遇到操作数:直接将其输出

2.当栈为空时,遇到运算符(* / + -),直接入栈

3.遇到其他运算符(* / + -),弹出所有优先级大于或者等于该运算符的栈顶元素,然后将该运算符入栈

4.遇到左括号:将其入栈

5.遇到右括号:执行出栈操作,将栈中的元素逐个输出,直到遇到左括号,同时将左右括号抛弃

6.最终将栈中的操作符依次出栈,输出。

例如:

100 + ( 200 - 50 * 3 ) / ( 13 - 8 )

转换过程如下:

1.100 + ( 200 - 50 * 3 ) / ( 13 - 8 )

遇到操作数 100 直接输出



2.+ ( 200 - 50 * 3 ) / ( 13 - 8 )

入到运算符 “+” ,因为栈为空,因此不需要比较直接放入栈中



3.( 200 - 50 * 3 ) / ( 13 - 8 )

遇到”(”, 直接放到栈中



4. 200 - 50 * 3 ) / ( 13 - 8 )

遇到操作数 200 直接输出



5.- 50 * 3 ) / ( 13 - 8 )

遇到运算符”-”,和栈顶元素比较,因栈顶元素为 “(”,故直接放入栈中



6.50 * 3 ) / ( 13 - 8 )

遇到操作数 50 直接输出



7.* 3 ) / ( 13 - 8 )

遇到运算符”” 和栈顶的运算符”-”进行优先级的比较,””的优先级大于 ”-”,故直接放到栈中



8.3 ) / ( 13 - 8 )

遇到操作数 3 直接输出



9 ) / ( 13 - 8 )

遇到”)”,逐个输出栈中的元素,直到遇到”(”



10./ ( 13 - 8 )

遇到运算符”/” 和栈顶的运算符”+”进行优先级的比较,”/”的优先级大于 ”+”,故直接放到栈中



11.( 13 - 8 )

遇到”(”, 直接放到栈中



12.13 - 8 )

遇到操作数 13 直接输出



13.- 8 )

遇到运算符”-”,和栈顶元素比较,因栈顶元素为 “(”,故直接放入栈中



14.8 )

遇到操作数 8 直接输出



15.)

遇到”)”,逐个输出栈中的元素,直到遇到”(”



16.然后逐个输出栈中的运算符

得到的最终结果便是中缀表达式转后缀表达式的结果

100 200 50 3 * - 13 8 - / +

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: