目标:中缀表达式转换为后缀表达式
规则: 从左到右遍历中缀表达式,遇到字符按如下方式处理;
1) 操作数
输出
2) 操作符(+,-,*,/)
判断优先级。优先级高(大于栈顶操作符),则它进栈;
优先级低(低于栈顶操作符),则删除栈顶元素并输出,重复此过程。最后它进栈。
3) 括号
开括号( :进栈
闭括号) :从栈顶开始删除元素,直到遇到(的下一个元素为止。将删除的操作符输出。
实例:(6+9)*3-8/(1+3)
结果:6 9 + 3 * 8 1 3 + / -
目标:计算后缀表达式
规则:初始化空栈,从左至右开始计算表达式
1) 操作数
进栈
2) 运算符
从栈顶开始删除两个元素。进行局部计算。
先删除的元素放在运算符的右边,后删除的元素放在运算符的左边。
将局部计算结果进栈。