【发布时间】:2013-11-27 15:42:38
【问题描述】:
在将中缀表达式转换为后缀表达式时,有没有更好的方法来处理一元“-”?
显而易见的是,每个一元“-”都带有一个 0 前缀。有人知道更好的实现吗?谢谢!
【问题讨论】:
-
这个问题有几种解决方案,afaik 他们都在某种程度上是hackish。
-
在您发帖两年后,我也遇到了同样的问题。这是一种总是相关的问题。这是一个观察结果:添加零(我也考虑过)并不总是有效:示例:--3 将转换为 0 - 3 -3 = -6 大多数解析器会将减号应用为乘以减一的乘积,这将是:- (-3) = 6。干杯,
-
@MrVelez:你是正确的,前缀零不起作用,但出于不同的原因。通过前缀零预处理'--3'应该产生'0-0-3'(不是'0-3-3',第二个3来自哪里?)。即 ',--3' --> '0-,-3' --> '0-0-,3' --> '0-0-3,' 导致后缀 '0 0 - 3 - '。这评估为 -3,这可能不是我们想要的 --3。 \ 如果我们可以将 '0-0-3' 转换为后缀 '0 0 3 - -' 那么它将评估为所需的 3。
标签: algorithm rpn shunting-yard