在上一篇随笔中已经知道如何将中缀表达式转换为后缀表达式,那么如何由后缀表达式计算出值呢?
//操作数栈 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]; }