所需数据类型:一个用来存储表达式的字符串或数组,一个用来辅助表达式转换的栈。
步骤如下:
(1)遇到操作数,直接输出;
(2)栈为空,遇到操作符,入栈;
(3)遇到左括号,入栈;
(4)遇到右括号:执行出栈操作,输出出栈元素,直到弹出栈的是左括号,左括号不输出;
(5)遇到运算符(加减乘除):弹出所有优先级大于等于该运算符的栈顶元素,然后将该运算符入栈;
(6)最后栈中元素依次出栈,输出。
相关解释:上面所说的输出指的是将元素存储至字符串或数组。
举例:
中缀表达式:a+b*c/d-(e-f*g)*h+i-j/k
转换后的后缀表达式: a bc* d/ + e fg* - h* - i+ jk/ -