这个问题分两大步:
1:将中缀表达式转换为后缀表达式——栈(c)存放运算符
遍历中缀表达式
遇到运算符(a),则拿当前的运算符(a)和栈(c)中数据比较,根据运算符的优先级(乘除高于加减,另需注意括号),决定要出栈或入栈的运算符。
当遍历完表达式时,把栈(c)中剩下的运算符依次出栈。
例如:a + b --> a b +
a + b * c --> a b c * +
(a + b) * c --> a b + c *
中缀 (-2)*4+(2*3+3) 转换为 后缀:-2 4 * 2 3 * 3 + +
2:计算后缀表达式——栈(s)存放计算结果
遍历,遇到数字入栈(s),遇到+、-、*、/ ,则(s)取出栈顶两个数字 做运算,在入栈(s)。
最后即为计算结果。
具体的规则详见逆波兰表达式。
温馨提示:内容为网友见解,仅供参考