算法描述:
从头到尾肚读取中缀表达式中的每个对象,对不同对象按不同情况处理。
1、运算数:直接输出;
2、左括号:压入堆栈;
3、右括号:将栈顶的运算符弹出并输出,知道遇到左括号(出栈,不输出);
4、运算符:
-
若优先级大于栈顶运算符时,则把它压栈;
-
若优先级小于等于栈顶运算符时,将栈顶运算符弹出并输出;再比较新的栈顶运算符,直到该运算符大于栈顶运算符优 先级为止,然后将该运算符压栈;
5、若各对象处理完毕,则把堆栈中留存的运算符一并输出。
Example:
中缀表达式:2 *( 9 + 6 / 3 - 5 )+ 4
后缀表达式:2 9 6 3 / +5 - * 4 +