1. 程式人生 > >計算後綴表達式的值

計算後綴表達式的值

maxsize efault switch pan pos fault 轉換 com 表達

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

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

計算後綴表達式的值