程序太长了,我把思路给你写下来吧!
算法思路:使用两个栈s1和s2,其中,s1为运算符栈,用以寄存运算符,而s2为操作数栈,用以寄存操作数或运算结果。其算法思路如下,
1.首先设置两栈为空,将"#"做为表达式起始附压入运算符栈s1做为栈底元素。
2.依次读入表达式的每个字符,若是操作数则进入操作数栈s2;若是运算符,则与s1的栈顶运算符比较优先级,若栈顶运算符的优先级低,则进入栈s1,若栈顶运算符优先级高,则弹出s1的栈顶运算符,并从栈s2中弹出两个操作数,做相应运算后,将结果压入操作数栈s2,然后再次与s1的栈顶运算符比较优先级,直至栈顶运算符优先级低为止。
3.当s1的栈顶运算符为“#”时,表达式求值结束,操作数栈s2中的数即为表达式的值!
作为一个程序编写者,我不能把答案给你,这样子我会害了你!^_^#
其实是程序太长了,我没法子写完!不好意思了!