请大虾们帮帮看看这道题!!!!!!!
题目:表达式求值.要求输入任意一个表达式(包含"+ - * / ( )"),求出该表达式的值.
注:最好是用C语言编写的,那样小弟才能看的懂(不过C++也可以).
如果可能的话,还可以帮小弟把程序的意思标清楚.
小弟万分感谢您!!!!!!
程序太长了,我把思路给你写下来吧!
算法思路:使用两个栈s1和s2,其中,s1为运算符栈,用以寄存运算符,而s2为操作数栈,用以寄存操作数或运算结果。其算法思路如下,
1.首先设置两栈为空,将"#"做为表达式起始附压入运算符栈s1做为栈底元素。
2.依次读入表达式的每个字符,若是操作数则进入操作数栈s2;若是运算符,则与s1的栈顶运算符比较优先级,若栈顶运算符的优先级低,则进入栈s1,若栈顶运算符优先级高,则弹出s1的栈顶运算符,并从栈s2中弹出两个操作数,做相应运算后,将结果压入操作数栈s2,然后再次与s1的栈顶运算符比较优先级,直至栈顶运算符优先级低为止。
3.当s1的栈顶运算符为“#”时,表达式求值结束,操作数栈s2中的数即为表达式的值!
作为一个程序编写者,我不能把答案给你,这样子我会害了你!^_^#
其实是程序太长了,我没法子写完!不好意思了!