使用堆栈将中缀转换为后缀表达式时该怎么办?

时间:2019-04-22 14:29:18

标签: data-structures stack postfix-mta

我面临的问题是,当两个具有相同优先级的运营商成为他们时该怎么办? 示例:
如果^位于堆栈的顶部,并且出现^,那该怎么办?
我应该将其输入堆栈还是仅弹出一个^或两个^都从堆栈中退出?

2 个答案:

答案 0 :(得分:0)

由于两个运算符的优先级都相同,因此只要不涉及括号,执行计算的顺序就无关紧要。您可以将其推入堆栈,然后一起进行计算,也可以弹出现有的进行计算。

答案 1 :(得分:0)

在这种情况下该做什么取决于操作员或其特定的优先级,并称为操作员的关联性:https://en.wikipedia.org/wiki/Operator_associativity

通常 + -具有相同的优先级和左关联性,例如,表示 a + b-c + d =((a + b) -c)+ d

赋值运算符通常具有右关联性,这意味着 a = b + = c = d a =(b + =(c = d)) < / p>

我没有做详细的调查,但是我认为指数运算符通常具有右结合性,因为左结合性在乘法中是多余的,即(a ^ b)^ c = a ^(b * c )