Home  >  Article  >  Database  >  逆波兰表达式学习日记(2)

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

WBOY
WBOYOriginal
2016-06-07 15:33:151068browse

鉴于今天星期三,下午常规没课。而且后缀求结果也挺简单的,就先把这个写完吧。 之前已经转化完了表达式,现在只要把一群数字和加减乘除运算一下就OK了(说实话,有点懒了,最近长春PM2.5有点高,我根本就没有兴趣搞ACM嘛) int change(char *a) { stack int

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

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

int change(char *a)
{
    stack t;
    int i=0;
    while(a[i]!='\0')
    {
        if(a[i]>='0'&&a[i]         {
            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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn