栈中缀转后缀

为了更好地理解上述转换算法,给出表达式A*B-(C+D)+E的具体执行过程

 中转前

从右往左扫描 若小于则出栈和入栈

后转前

void infix(char infix[],char s2[],int &top2)
{
    char s1[maxsize];int top=-1;
    int i=0;
    while(infix[i]!='\0')
    if(0<infix[i]<9)
    {s2[++top2]=infix[i]
    ++i
    }
    else if(infix[i]=='(')
    {
        s1[++top1]='(';
        ++i;
    }
    else if(infix[i]==+-*/)
    {
        if(top==-1||s1[top1='('||
        getpriority(infix[i])>getpriority(s1[top1]))
    }
}

猜你喜欢

转载自www.cnblogs.com/lifutao/p/12961165.html