我使用以下逻辑来实现对后缀转换的中缀,以便稍后进行评估。
中缀转换的循环,在每次迭代中,请执行以下操作:
注意:当我遇到+
或-
时,我可以确定它是二进制还是一元运算符。如果是二进制,则将其以'+'或[C0]的形式添加到堆栈中,但如果是一进制,则将其以'@'或'$'的形式添加。
该算法效果很好,除非两个一元运算符彼此相邻。
例如,-
变为"--4"
,这是错误的。
怎么了?解决此问题的正确方法是什么,不会破坏其他情况?
您将"@ 4 @"
标识为一元运算符,然后按-
@
标识为一元运算符,看到堆栈上的该运算符也是一元运算符,并按下另一个-
。@
,并将其输出。