我编写了这个比较常见的算法,它解析给定的输入,然后将其从infix转换为后缀。
我正在处理的问题是事件的顺序。很可能我误解了后缀手术..。
假设我想计算10/(2-4)/5 :答案应该是-1,但是,我得到的答案是-25。
-,5,/,/
为什么?因为我的“后缀”先做-2/5,然后除以10/-4,这显然是错误的:
我错过了什么简单的东西吗?
发布于 2013-08-11 21:44:08
表达式在同一级别上有两个除法操作(没有括号)。假设除法将左向右关联,则表达式应解释为
(10 / (2 - 4)) / 5然后,以后缀表示法将其转换为以下内容:
10 2 4 - / 5 /您最终得到的后缀将对应于顺序:
10 / ((2 - 4) / 5)从解析树生成反向波兰应该可以解决问题,前提是解析树是从infix表达式中正确生成的。
https://stackoverflow.com/questions/18176952
复制相似问题