一、信息学oj-1331:后缀表达式的值
1.1 问题描述
1.2 问题解决
#include
#include
#include
#include
using namespace std;
const int N = 250+5;
typedef long long ll;
char str[N];
stack s;
int main()
{
gets(str);
int i = 0;
ll num = 0;
ll a = 0;
ll b = 0;
while(str[i] != '@')
{
switch(str[i])
{
case '+': a = !s.empty() ? s.top() : 0;
s.pop();
b = !s.empty() ? s.top() : 0;
s.pop();
s.push(a+b);
break;
case '-': a = !s.empty() ? s.top() : 0;
s.pop();
b = !s.empty() ? s.top() : 0;
s.pop();
s.push(b-a);
break;
case '*': a = !s.empty() ? s.top() : 0;
s.pop();
b = !s.empty() ? s.top() : 0;
s.pop();
s.push(a*b);
break;
case '/': a = !s.empty() ? s.top() : 0;
s.pop();
b = !s.empty() ? s.top() : 0;
s.pop();
s.push(b/a);
break;
case ' ': s.push(num); num = 0; break;
default : num = num*10 + str[i]-'0';
}
i++;
}
printf("%lldn", s.top());
return 0;
}