后缀表达式

所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。

如:3*(5–2)+7对应的后缀表达式为:3.5.2.-*7.+@。’@’为表达式的结束符号。‘.’为操作数的结束符号。

输入格式:

输入:后缀表达式

输出格式:

输出:表达式的值

输入样例#1:
3.5.2.-*7.+@
输出样例#1:
16


 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cstring>
 5 
 6 using namespace std;
 7 
 8 char s[1000+15];
 9 int stack[10000+15];
10 int top,x,i;
11 
12 int ys(char s[1000+15])
13 {
14     while(i<strlen(s)-1)
15     {
16         switch(s[i])
17         {
18             case '+' :stack[--top]+=stack[top+1]; break;
19             case '-' :stack[--top]-=stack[top+1]; break;
20             case '*' :stack[--top]*=stack[top+1]; break;
21             case '/' :stack[--top]/=stack[top+1]; break;
22             default:
23             x=0;
24             while(s[i]!='.')
25             x=x*10+s[i++]-'0';
26             stack[++top]=x; 
27             break;
28         }
29         i++;
30     }
31     return stack[top];
32 }
33 
34 int main()
35 {
36     gets(s);
37     cout<<ys(s);
38     cout<<endl;
39     return 0;
40 }

 

posted @ 2017-02-04 17:22  Aptal丶  阅读(338)  评论(0编辑  收藏  举报