计算后缀表达式的值


在上一篇随笔中已经知道如何将中缀表达式转换为后缀表达式,那么如何由后缀表达式计算出值呢?

//操作数栈
typedef struct {
    int data[MAXSIZE];
    int top;
} ST;

ST st;


//计算后缀表达式的值
int compvalue(char postexp[]) {
    st.top=-1;
    int d=0;
    int i=0,j=0;
    char ch = postexp[i];

    while(ch!='\0') {
        switch(ch) {
            case '+': {
                st.data[st.top-1]=st.data[st.top-1]+st.data[st.top];
                st.top--;
                break;
            }
            case '-': {
                st.data[st.top-1]=st.data[st.top-1]-st.data[st.top];
                st.top--;
                break;
            }
            case '*': {
                st.data[st.top-1]=st.data[st.top-1]*st.data[st.top];
                st.top--;
                break;
            }
            case '/': {
                st.data[st.top-1]=st.data[st.top-1]/st.data[st.top];
                st.top--;
                break;
            }
            case ' ':
                break;
            default: {
                d=0;
                while(ch>='0'&&ch<='9') {
                    d=d*10+ch-'0';
                    i++;
                    ch=postexp[i];
                }
                st.top++;
                st.data[st.top]=d;
                break;
            }
        }
        i++;
        ch=postexp[i];

    }
    return st.data[st.top];
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM