[請益] 中序與後序式中的負號與減號處理問題?

作者: 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