0

我编写了这个相对普通的算法,它解析给定的输入,然后将其从中缀转换为后缀。

我遇到的问题涉及事件的顺序。我可能对后缀操作有误解......

假设我要计算 10/(2-4)/5 :答案应该是 -1,但是,我得到的答案是 -25。

10,2,4,-,5,/,/

为什么?因为我的“后缀”先做 -2/5,然后除以 10/-.4,这显然是错误的:

我缺少一些简单的东西吗?

4

1 回答 1

1

您的表达式在同一级别有两个除法运算(无括号)。假设除法从左到右关联,则表达式应解释为

(10 / (2 - 4)) / 5

这应该在后缀表示法中变成以下内容:

10 2 4 - / 5 /

您最终得到的后缀将对应于排序:

10 / ((2 - 4) / 5)

从解析树生成反向波兰语应该可以解决问题,假设解析树是从中缀表达式正确生成的。

于 2013-08-11T21:44:08.003 回答