计算后缀表达式的过程(C#)

  计算后缀表达式的过程是一个很好玩的过程,而且很简单哦!这里呢,有个计算的技巧,就是:遇到数字直接入栈,遇到运算符就计算!

  后缀表达式也叫逆波兰表达式,求值过程可以用到栈来辅助存储;

  假定待求值的后缀表达式为:12  4  +  13  -  6  2  *  +  =  

  求计算出最终结果:

(1)首先我们看到在第一个运算符之前呢,有两个数字,那么我们就先把它放入栈中:

:我们可以看到,下标是从下方开始读的,一定要注意哦,不要弄反了!!!

 

(2)读到“+”,则弹出12和4,执行相加,12+4,=16,并把16放进栈中:(先弹12,再弹4,顺序不能弄错了!!

 



(3)读到数字“13”,则直接把13放入栈内:

(4)读到运算符“-”,则弹出16和13,执行相减,那么16-13=3,并把3放入到栈中:

 

:在这里我们可以看到,如果我们把弹出的顺序弄反了,那么得到的数字就会完全不同,那后面的结算也会完全不一样,所以,弹出的顺序不能弄反了!!!

(5)读到数字“6”,直接入栈:

 

(6)读到数字“2”,直接入栈:

(7)读到运算符“*”,弹出6和2,执行相乘,6*2=12,并把12放入到栈中:

(8)读到运算符“+”,则弹出3和12,执行相加,3+12=15,并把15放入栈中:

(9)到了这里,我们已经把后缀表达式都已经执行了一遍,那么得到的最后结果为15,故:

  12  4  +  13  -  6  2  *  +  =  15

这就是运算过程,是不是很简单!!!

                                                                  END 

原文地址:https://www.cnblogs.com/finalanddistance/p/6999528.html