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

问题描述 投票:0回答:2

我面临的问题是,当两个具有相同优先级的运营商是他们的时,该怎么做? 例: 如果^位于堆栈的顶部,^来了该怎么办? 我应该在堆栈中输入它还是只是弹出一个^或两个^从堆栈中出来?

data-structures stack postfix-mta
2个回答
0
投票

由于两个运算符具有相同的优先级,因此只要不涉及括号,执行计算的顺序无关紧要。您可以将其推入堆栈并稍后进行计算,或者弹出现有计算以立即进行计算。


0
投票

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

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

赋值运算符通常具有右关联性,意味着a = b + = c = d与a =(b + =(c = d))相同

我没有做过详细的调查,但我认为取幂运算符通常具有正确的相关性,因为左关联性是乘法的冗余,即(a ^ b)^ c = a ^(b * c)

© www.soinside.com 2019 - 2024. All rights reserved.