逆波兰表达式学习日记(2)

鉴于今天星期三,下午常规没课。而且后缀求结果也挺简单的,就先把这个写完吧。

之前已经转化完了表达式,现在只要把一群数字和加减乘除运算一下就OK了(说实话,有点懒了,最近长春PM2.5有点高,我根本就没有兴趣搞ACM嘛)

int change(char *a)
{
    stack <int>t;
    int i=0;
    while(a[i]!='\0')
    {
        if(a[i]>='0'&&a[i]<='9')         //遇到0-9就压入
        {
            t.push((int)a[i++]-'0');
        }
        else
        {
            int num1,num2;
            num1=t.top();t.pop();
            num2=t.top();t.pop();
            switch(a[i++])                             //有运算符的话,先把数字取出来,然后运算后的结果压进去
            {
                case '+':num1+=num2;t.push(num1);break;
                case '-':num2-=num1;t.push(num2);break;
                case '*':num1*=num2;t.push(num1);break;
                case '/':num2/=num1;t.push(num2);break;
            }
        }
    }
    return t.top();                                   //最后,栈内留下的最后一个数就是你要的结果啦
}

因为有点想看看数据结构后面的东西了,所以有点着急结束,这两个函数只能针对个位数的运算,没有在后缀表达式插入空行来区分数字,那就留着我之后再去写吧。。(困)

over

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值