中缀表达式转后缀表达式
教材讲的不明不白的,自己上网查了下
具体转换方式:
1.从左到右进行遍历
2,遇到运算数,直接输出.
3.遇到左括号,直接压入堆栈,除非遇到右括号,不用做任何操作和比较
4.遇到右括号,(意味着括号已结束)不断弹出栈顶运算符并输出直到遇到左括号(弹出但不输出)
5.遇到运算符,将该运算符与栈顶运算符进行比较,
如果运算符优先级高于栈顶运算符则压入堆栈(该部分运算还不能进行),
如果运算符优先级低于或等于栈顶运算符则将栈顶运算符弹出并输出,然后比较新的栈顶运算符.
(低于弹出意味着前面部分可以运算,先输出的一定是高优先级运算符,等于弹出是因为同等优先级,从左到右运算)
直到运算符优先级大于栈顶运算符或者栈空,再将该运算符入栈.
6.如果已经没有数字和符号,则按顺序弹出并输出栈中所有运算符.
