为了更好地理解上述转换算法,给出表达式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])) } }
原文:https://www.cnblogs.com/lifutao/p/12961165.html