(1)题目:
(1.1)题目内容:
输入一串数据K,每个数据用' '隔开,不会出现非“+ - * /”的符号,不会出现大于两位的数 字,输出后缀表达式的结果S。
(1.2)样例输入:
4 5 3 2 - + - 6 +
(1.3)样例输出:
4
(1.4)数据范围&提示
提示1:
K的数据个数<=9999 S<=10の9次方
提示2:
栈
---------------------------------------------------------------------------------------------------------------------------------
(2)题解:
(2.1)答案
#include<bits/stdc++.h>//cf
using namespace std;
long long z[10000];
long long x,q;
long long top;
void pop(){
top--;
return;
}
void push(long long x){
top++;
z[top]=x;
return;
}
long long front(){
return z[top];
}
long long front1(){
return z[top-1];
}
bool empty(){
if (top==0) return true;
else return false;
}
int main(){
char l[10000];
cin>>l;
for(int i=0;i<=strlen(l);i++){
if(l[i]!='+'&&l[i]!='*'&&l[i]!='-'&&l[i]!='/'){
push(int(l[i])-48);
}
else if(l[i]=='+'){
x=front()+front1();
pop();
pop();
push(x);
}
else if(l[i]=='-'){
x=front1()-front();
pop();
pop();
push(x);
}
else if(l[i]=='*'){
x=front()*front1();
pop();
pop();
push(x);
}
else if(l[i]=='/'){
x=front()/front1();
pop();
pop();
push(x);
}
if(top==1){
cout<<front()<<endl;
return 0;
}
cin>>q;
}
return 0;
} //栈可以看我上一篇文章