while (从exp读取字符ch,ch!='\0')
{ ch为数字:将后续的所有数字均依次存放到postexp中,
并以字符'#'标志数值串结束;
ch为左括号'(':将此括号进栈到Optr中;
ch为右括号')':将Optr中出栈时遇到的第一个左括号'('以前的运算符依次出
栈并存放到postexp中,然后将左括号'('出栈;
ch为其他运算符:
if (栈空或者栈顶运算符为'(') 直接将ch进栈;
else if (ch的优先级高于栈顶运算符的优先级)
直接将ch进栈;
else
依次出栈并存入到postexp中,直到栈顶运算符优先级小于ch的
优先级,然后将ch进栈;
}
若exp扫描完毕,则将Optr中所有运算符依次出栈并存放到postexp中。
while (从exp读取字符ch,ch!='\0')
{ ch为数字:将后续的所有数字均依次存放到postexp中,
并以字符'#'标志数值串结束;
ch为左括号'(':将此括号进栈到Optr中;
ch为右括号')':将Optr中出栈时遇到的第一个左括号'('以前的运算符
依次出栈并存放到postexp中,然后将左括号'('出栈;
ch为'+'或'-':出栈运算符并存放到postexp中,直到栈空或者栈顶为'(',
然后将'+'或'-'进栈;
ch为'*'或'/':出栈运算符并存放到postexp中,直到栈空或者栈顶
为'('、'+'或'-',然后将'+'或'-'进栈;
}
若exp扫描完毕,则将Optr中所有运算符依次出栈并存放到postexp中。