数据结构,问题 C: 后缀表达式
题目描述
所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。
如:3*(5–2)+7对应的后缀表达式为:3.5.2.-*7.+@。’@’为表达式的结束符号。‘.’为操作数的结束符号。
输入
后缀表达式(保证只包含+-*/四种操作符号,结果在int范围内)
输出
表达式的值
样例输入 复制
3.5.2.-*7.+@
样例输出 复制
16
#include<bits/stdc++.h>
using namespace std;stack<int> st;int main(){string a;getline(cin, a);int num = 0;for(int i = 0;a[i] != '@';i ++){if(a[i] <= '9' && a[i] >= '0'){num = num * 10 + (a[i] - '0');}else if(a[i] == '.'){st.push(num);num = 0;}else {int x,y;y = st.top(),st.pop();x = st.top(),st.pop();switch (a[i]){case '+' :st.push(x + y);break;case '-':st.push(x - y);break;case '*':st.push(x * y);break;case '/':st.push(x / y);break;default : break;}}}cout << st.top() << '\n';return 0;
}