c++中缀表达式转后缀表达式实例
时间: 2023-05-17 16:01:36 浏览: 135
C++ 中缀表达式转后缀表达式
中缀表达式是我们平常所熟悉的表达式格式,通过加上括号来确定运算的优先级。例如:(4+6)*3/2-8。但对于计算机来说,它并不适合处理,因为加括号增加了表达式的复杂度,使得计算机解析难度变大。
因此,我们需要将中缀表达式转换为后缀表达式,也就是将括号使用栈的方式处理掉,并调整运算顺序,使表达式的每个元素都按照左右顺序排列。例如上面的表达式转换为后缀表达式就是:4 6 + 3 * 2 / 8 -
转换的过程如下:
(1)从左到右遍历中缀表达式的每个元素,如果是操作数,则直接输出到后缀表达式中。
(2)如果是运算符,先将其压入栈中,遇到左括号时不作处理,遇到右括号时,将栈中的运算符依次弹出并输出到后缀表达式中,直到遇到左括号。
(3)遍历完整个中缀表达式后,如果还有运算符在栈中,就依次弹出并输出到后缀表达式中,直到栈为空为止。
因此,在上述表达式中,我们可以得到如下的变化:
中缀表达式 (4+6)*3/2-8;
输出序列 4 6 + 3 * 2 / 8 -.
通过这样的转换,我们就将表达式由也许会存在歧义的中缀表达式,转化为了利于计算机计算的后缀表达式。
阅读全文