中缀表达式求值
- 题目
给出一个表达式,其中运算符仅包含+,-,*,/,^(加 减 乘 整除 乘方)要求求出表达式的最终值
数据可能会出现括号情况,还有可能出现多余括号情况
数据保证不会出现>=2^31的答案
数据可能会出现负数情况 - 输入: (2+2)^(1+1)
- 输出 :16
解题思路:
中缀表达式就是通用的算术或逻辑公式表示方法。
形如 (1+2)−3(1+2)-3(1+2)−3 ,(a+b)×c−d(a+b)\times c-d(a+b)×c−d 等;
显然用字符串读入后不便于计算结果,我们考虑把它转为后缀表达式。
如:我们平时写 a+ba+ba+b,这是中缀表达式,写成后缀表达式就是:ab+ab+ab+ ,
(a+b)∗c−(a+b)/e(a+b)*c-(a+b)/e(a+b)∗c−(a+b)/e的后缀表达式为: ab+c∗ab+e/−ab+c*ab+e/-ab+c∗ab+e/− 这样做有什么好处?
我们可以通过使用两个栈(一个存储数值 q1q_1q