一.中缀表达式转后缀表达式
midstr:9-2*3+(5-2)*4
如图,遍历表达式如果是操作数则直接输出到laststr中
9:直接输出 laststr: 9
-:栈内控则入栈 laststr:9
2:直接输出 laststr:92
*:由于栈外*优先级为4>栈内-优先级3,则入栈 laststr:92
3:直接入栈 laststr:923
+:由于栈外+优先级为2<栈内*优先级5则*先出栈
且栈外+优先级2<栈内-优先级3,则-出栈 。然后+入栈 laststr:923*-
(: 栈外(优先级6>栈内+优先级,则入栈 laststr:923*-
5:直接输出 laststr923*-5
-:栈外-优先级>栈内(直接入栈: laststr:923*-5
2:直接输出 laststr 923*-52
):栈外)优先级小于栈内-,则-出栈。)与(匹配出栈但不写入laststr. laststr:923*-52-
*:栈外*优先级<栈内+,直接入栈 laststr: 923*-52-
4:直接输出 laststr:923*-52-4
最后如果栈内非空则依次出栈laststr: 923*-52-4*+
二.计算后缀表达式
遍历后缀表达式,操作数直接入栈,运算符直接输出,先出栈在运算符右,后出栈在运算符左,计算之后在入栈,重复直到遍历完。