我编写了这个相对普通的算法,它解析给定的输入,然后将其从中缀转换为后缀。
我正在处理事件顺序的问题。我可能误解了关于后缀操作的一些事情......
假设我想计算10 /(2-4)/ 5:答案应该是-1,但是,我得到的答案是-25。
10,2,4, - ,5,/,/
为什么呢?因为我的'后缀'会先行-2/5然后再划分10 / - .4,这显然是错误的:
我有什么简单的东西吗?
答案 0 :(得分:1)
你的表达式在同一级别有两个除法运算(没有括号)。假设除法从左到右关联,则表达式应解释为
(10 / (2 - 4)) / 5
然后应该在后缀表示法中变为以下内容:
10 2 4 - / 5 /
您最终得到的后缀将对应于排序:
10 / ((2 - 4) / 5)
从解析树生成反向波兰语应该清除问题,假设从中缀表达式正确生成了解析树。