[请益] 中序与后序式中的负号与减号处理问题?

楼主: SeamusBerloz (轩摩斯)   2018-11-05 16:40:07
想请问大大们
对于‘中序表示法’与‘后序表示法’中的负号‘-’
(假设非得使用减号字符 ascii: 0x2d 表示的话),
进行中序对后序式的转换后,再使用堆叠进行后序式计算求值。
原中序式:
2*(-18/3)
我自己查到的例子五花八门 (输出皆用空白字符分隔每一项):
第 1 种 (负号不移位):
2*(-18/3) ==> 2 -18 3 / * ==> -18 除以 3 先做 ==> 最后结果得 -12
第 2 种 (负号移位):
2*(-18/3) ==> 2 18 - 3 / * ==> * 号会少了一个算子
(分不出来 - 号到底是 "负号" 还是 "减号")
第 3 种 (预先处理补零):
2*(-18/3) ==> 2*((0-18)/3) ==> 2 0 18 - 3 / *
==> 0 减去 18 先做 ==> 最后结果得 -12
小弟想请教,考虑输入是有可能错误的,需要指出错误与不合法之处,那么:
1、哪一种后序在学理上才是正确的转法?
2、如果都不是,怎样做才是正确的呢?

Links booklink

Contact Us: admin [ a t ] ucptt.com