数据结构实验之栈三:后缀式求值

来源:互联网 发布:倒带和彩虹歌词知乎 编辑:程序博客网 时间:2024/06/07 20:57
#include<iostream>#include<algorithm>using namespace std;const int maxn=100000+10;typedef struct node{    int *data;    int top;    int bottom;}Stack;Stack S;void initstack(Stack &S){    S.data=new int [maxn];    S.top=S.bottom=0;}void push(Stack &S, int s){    S.data[S.top]=s;    S.top++;}void pop(Stack &S){    S.top--;    cout<<S.data[S.top]<<endl;}int main(){    ios::sync_with_stdio(false);    Stack S;    string s;    initstack(S);    cin>>s;    for(int i=0; s[i]!='#';i++)    {        if(s[i]=='*')        {            S.data[S.top-2]=S.data[S.top-1]*S.data[S.top-2];            S.top-=1;        }        else if(s[i]=='+')        {            S.data[S.top-2]=S.data[S.top-1]+S.data[S.top-2];            S.top-=1;        }        else if(s[i]=='-')        {            S.data[S.top-2]=S.data[S.top-2]-S.data[S.top-1];            S.top-=1;        }        else if(s[i]=='/')        {            S.data[S.top-2]=S.data[S.top-2]/S.data[S.top-1];            S.top-=1;        }        else        {            int x=s[i]-'0';            push(S, x);        }    }    cout<<S.data[S.top-1]<<endl;    return 0;}

0 0