主要思路:从左到右扫描算术表达式,遇到的操作数直接存放到后缀表达式中,遇到的运算符以及左括号都暂时保存到运算符栈且先执行的运算符先出栈。
前提说明:exp:中缀表达式;postexp:后缀表达式;
算法描述:在扫描exp遇到一个运算符op时,
1、若栈为空,直接进栈
2、若不为空,当op的优先级高于栈顶运算符的优先级时才直接将op进栈,否则依次出栈并存入postexp,直到栈顶运算符的优先级小于op的优先级为止,然后再将op进栈。
3、若op为 ‘(’ ,直接进栈。
4、若op为 ‘)’ ,出栈运算符并存入postexp,直到栈顶为 ‘(’ ,再将 ‘(’ 出栈。
5、若op为其他运算符,而栈顶为 ‘(’ ,直接进栈。
来源:CSDN
作者:temperamentalkj
链接:https://blog.csdn.net/Never_say_die_kj/article/details/103462597