首页 > 其他 > 详细

将中缀表达式转换成后缀表达式

时间:2015-03-17 10:14:50      阅读:324      评论:0      收藏:0      [点我收藏+]

中缀表达式(标准形式):A+(B-C/D+E)*F

后缀表达式(便于计算机计算):ABCD/-E+F*+

本文使用栈来实现中缀表达式到后缀表达式的转换。

 

操作数:A B C D E F

操作符:+ - / * ( )

操作符优先级:( )  >  / *  >  + -

逐个字符读取中缀表达式,结果不断输出,利用栈对操作符进行缓存:

1. 遇到操作数直接输出

2. 遇到操作符,如果此操作符优先级大于栈顶操作符,则将此操作符压栈,否则输出栈顶操作符;如遇到),则把栈内操作符依次弹出,直到(,()不用输出

 

操作演示:

1.

输入:A+(B-C/D+E)*F

栈:

输出:A

 

2.

输入:A+(B-C/D+E)*F

栈:+

输出:A

 

3.

输入:A+(B-C/D+E)*F

栈:+(

输出:A

 

4.

输入:A+(B-C/D+E)*F

栈:+(

输出:AB

 

5.

输入:A+(B-C/D+E)*F

栈:+(-

输出:AB

 

6.

输入:A+(B-C/D+E)*F

栈:+(-

输出:ABC

 

7.

输入:A+(B-C/D+E)*F

栈:+(-/

输出:ABC

 

8.

输入:A+(B-C/D+E)*F

栈:+(-/

输出:ABCD

 

9. 根据优先级弹出-/

输入:A+(B-C/D+E)*F

栈:+(

输出:ABCD/-+

 

10.

输入:A+(B-C/D+E)*F

栈:+(

输出:ABCD/-+E

 

11. 遇到),弹出栈内操作符,直到(,()都不输出

输入:A+(B-C/D+E)*F

栈:+

输出:ABCD/-+E

 

12.

输入:A+(B-C/D+E)*F

栈:+*

输出:ABCD/-+E

 

13.

输入:A+(B-C/D+E)*F

栈:+*

输出:ABCD/-+EF

 

14. 输入结束,将栈内操作符全部弹出

输入:A+(B-C/D+E)*F

栈:

输出:ABCD/-+EF*+

将中缀表达式转换成后缀表达式

原文:http://www.cnblogs.com/lxdong/p/4343606.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!