后缀表达式[带题+答案]

(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;
} //栈可以看我上一篇文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值