计算后缀表达式的值

Posted hekuiflye

tags:

篇首语:本文由小常识网(cha138.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!=) {
        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];
}

 

以上是关于计算后缀表达式的值的主要内容,如果未能解决你的问题,请参考以下文章

c语言 后缀表达式计算

计算字符串表达式的值

Java中++,--,前缀后缀表达值的不同,与^的值计算

将中缀表达式转换成后缀表达式

java 中字符串能不能直接转换为数学表达式进行计算,不可以要怎么转换,求具体代码。简单点,最好带括号

C++ 使用栈求解中缀后缀表达式的值