C语言 任意表达式求值.(栈的应用
C语言 任意表达式求值.(栈的应用
日期:2017-06-13 20:04:50 人气:1
表达式求值,关键是实现数学运算优先法则。有两个栈,一个是数据栈,一个是运算符号栈。将表达式数学顺序中在前面,但是运算必须后置的数据和运算符,必须压入栈中保存。等到计算时机到了,再计算。
一种简单的做法,先行将表达式分析成逆波兰式,压入栈中;然后从栈顶开始,依次计算。
比如:
5+6x3x(5-3)
数据栈:5,6,3,5,3,
符号栈:+xx-
计算:5-3=2,结果压入栈中;
5,6,3,2
+xx
3x2=6
5,6,6
+x
6x6=36
5,36
+
5+36=41