在将中缀表达式转换为后缀表达式时,有更好的方法来处理一元"-"吗?
显而易见的是,在每个一元"-"前面加一个0。有人知道更好的实施吗?谢谢
几年前我做这件事的方式是为我的后缀表达式发明一个新的运算符。因此,当我在中缀中遇到一元减号时,我会将其转换为#
。所以我的a + -b
后缀变成了ab#+
。
当然,我的评估者必须知道#
只弹出了一个操作数。
这在某种程度上取决于你在构建后缀表达式后如何使用它。如果你想显示它,那么你的特殊#
运算符可能会让人感到困惑。但如果你只是在内部使用它(我是这样),那么它会很好地工作。
遍历字符串,将所有一元减号运算符替换为0-
,并将结果用括号括起来。例如,给定-20 + (-2 * 50)
,将其转换为(0-20) + ((0-2) * 50)
。