码迷,mamicode.com
首页 > 其他好文 > 详细

计算后缀表达式的值

时间:2018-07-30 14:38:40      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:size   case   class   如何   char   turn   color   cas   def   

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

//操作数栈
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];
}

 

计算后缀表达式的值

标签:size   case   class   如何   char   turn   color   cas   def   

原文地址:https://www.cnblogs.com/hekuiFlye/p/9390167.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!