Fork me on GitHub

四则运算使用栈和后缀表达式

我们在一般的四则运算都是中缀表达式。

别问我什么是中缀表达式。

我就知道符号两边是数字。也就是符号在中间。

1+3

什么是后缀表达式呢?

13+

符号在后面。

 

那么就有人奇怪了,为什么我要使用后缀表达式呢?

问题就是运算的时候,在编程实现的时候,后缀表达式比中缀表达式好用呗。

 

没事,不理解那里好用没事,我们先把中缀表达式转换成后缀表达式然后实际看看就知道了。

 

 

从左到右依次读取

运算数,输出

左括号,入栈

右括号,将栈顶的运算符并输出,直到遇到左括号

运算符

{

若优先级大于栈顶运算符,入栈

若优先级小于栈顶运算符,栈顶运算符出站并输出,再比较新的栈顶运算符,直到运算符大于栈顶运算符为止,然后这个运算符入栈

}

最后把栈全部输出

 

2+3*(2+3)-1

出2

出2栈+

出23栈+

出23栈+*

出23栈+*(

出232栈+*(

出232栈+*(+

出2323栈+*(+

出2323+*+栈-

出2323+*+1栈-

出2323+*+1-栈

 

然后利用栈来计算这个式子

栈2323

遇到+了

出来两个数,结果进去

栈235

遇到*了

出来两个,结果进去

2 15

遇到+了

出来两个数,结果进去

17

遇到1了进去

17 1

遇到-了

出来两个数,结果进去

16

 

就算遇到了很难的,很复杂的式子,只要利用后缀表达式就很容易了。

主要还是利用栈的特性,合理的使用数据结构是很重要的。

posted @ 2016-07-09 21:59  LinkinStar  阅读(501)  评论(0编辑  收藏  举报