输入的时候要特别注意,咱们输入的一定是后缀表达式!
#include<iostream>
using namespace std;
#define MAXSIZE 20
typedef struct
{
int *base;
int *top;
int size;
}stack;
void init(stack &S)
{
S.base=new int[MAXSIZE];
if(S.base==NULL)
exit(0);
S.top=S.base;
S.size=MAXSIZE;
}
void push(stack &S,int e)
{
if(S.top-S.base==S.size)
exit(0);
*S.top++=e;
}
void pop(stack &S,int &e)
{
if(S.base==S.top)
exit(0);
e=*--S.top;
}
int judge(int a,char e,int b)
{
if(e=='+')
return a+b;
else if(e=='-')
return a-b;
else if(e=='*')
return a*b;
else if(e=='/')
return a/b;
else
{
cout<<"error!"<<endl;
return 100;
}
}
int main()
{
stack S;
init(S);
string e;
int a,b,c;
cin>>e;
for(int i=0;e[i]!='\0';i++)
{
if(e[i]>='0'&&e[i]<='9')
{
push(S,(int)e[i]-48);
//cout<<*(S.top-1)<<endl;
}
else
{
pop(S,b);
pop(S,a);
c=judge(a,e[i],b);
push(S,c);
}
}
cout<<*(S.top-1);
}