計算后綴表達式的值


在上一篇隨筆中已經知道如何將中綴表達式轉換為后綴表達式,那么如何由后綴表達式計算出值呢?

//操作數棧
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