計算後綴表達式的值
阿新 • • 發佈:2018-07-30
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]; }
計算後綴表達式的值