标签:
我们在一般的四则运算都是中缀表达式。
别问我什么是中缀表达式。
我就知道符号两边是数字。也就是符号在中间。
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
就算遇到了很难的,很复杂的式子,只要利用后缀表达式就很容易了。
主要还是利用栈的特性,合理的使用数据结构是很重要的。
标签:
原文地址:http://www.cnblogs.com/linkstar/p/5656727.html