表达式 3*2^(4+2*2-6*3)-5 求值过程中当扫描到6时,对象栈和算符栈分别是什么?其中^为乘幂!

问题描述:

表达式 3*2^(4+2*2-6*3)-5 求值过程中当扫描到6时,对象栈和算符栈分别是什么?其中^为乘幂!

对象栈:3,2,8;算符栈:*,^,(,-.
具体过程:
第一次:对象栈:3;算符栈:*;
第二次:对象栈:3,2;算符栈:*,^,(;
第三次:对象栈:3,2,4;算符栈:*,^,(,+;
第四次:对象栈:3,2,4,2;算符栈:*,^,(,+,*;
第五次:对象栈:3,2,4,4;算符栈:*,^,(,+;
第六次(扫描到6):对象栈:3,2,8;算符栈:*,^,(,-.可是我这答案中,算符栈是:# * ^( - 啊!前面多了一个 # 这有什么差别吗?还有能麻烦说一下它的规则吗?比如在什么情况下,可以将运算符两边的值运算出来?那个#可能是打印错误,也可能跟特定的算法有关系,否则不可能出现#符的。这个影响不大,小细节,反正正确答案包括 * ^( - 就好了。规则无非就是遵循四则运算法则,扫描到某个数时,先把它入栈,扫描数字后面的运算符,根据运算符优先顺序决定计算顺序。比如算到“2*2- ”时,先把2*2出栈,运算过后,把运算结果4入栈。就这样。要是还有疑问可以发邮件sanmuzhendong@126.com。