6-5 Evaluate Postfix Expression (25分)


 

 

 

 

 

 

 

 解題思路:計算后綴表達式的值

1、遇到數字入棧

2、遇到符號則出棧計算

3、或棧中僅剩1個數,則棧中值即為所求,否則,錯誤

ElementType EvalPostfix( char *expr ) {
    ElementType stack[Max_Expr];
    char b[Max_Expr];
    int i=0,j=0;
    int top=-1;
    ElementType x,y;
    while(expr[i]!='\0') {
        while(expr[i]==' ')
            i++;
        if(isdigit(expr[i])||expr[i]=='.')
        {
            b[j++]=expr[i];
            if(expr[i+1]==' '||expr[i+1]=='\0') {
                b[j]='\0';
                stack[++top]=atof(b);
                j=0;
            }    
        }        
        else {
            if(expr[i]=='-'||expr[i]=='+') {
                if(isdigit(expr[i+1])) {
                    b[j++]=expr[i];
                } else if(expr[i+1]==' '||expr[i+1]=='\0') {
                    if(top) {
                        x=stack[top--];
                        y=stack[top];
                        if(expr[i]=='+')
                            stack[top]=y+x;
                        else
                            stack[top]=y-x;
                    } else
                        return Infinity;

                }
            } else if(expr[i]=='*'||expr[i]=='/') {
                if(top) {
                    x=stack[top--];
                    y=stack[top];
                    if(expr[i]=='*')
                        stack[top]=y*x;
                    else {
                        if(x)
                            stack[top]=y/x;
                        else
                            return Infinity;
                    }
                } else
                    return Infinity;
            } 
        }
        i++;
    }
    if(!top)
    return stack[top];
    else
    return Infinity;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM