Reverse Polish Notation (後綴表達式)

標準的表達式如"A+B",在數學上學名叫中綴表達式(Infix Notation),原因是運算符號在兩個運算對象的中間。相對應的還有前綴表達式(Prefix Notation),如:"+ - A * B C D",轉換成中綴表達式爲:"A - B * C + D";後綴表達式(Postfix Notation),比如前所述的中綴表達式轉換爲後綴表達式爲:"A B C * - D +"。爲了紀念波蘭數學家魯卡謝維奇(Jan Lukasiewicz),前綴表達式被稱作波蘭表達式,後綴表達式稱爲逆波蘭表達式(Reverse Polish Notation)。
後綴表達式的優點是顯而易見的,編譯器在處理時候按照從左至右的順序讀取逆波蘭表達式,遇到運算對象直接壓入堆棧,遇到運算符就從堆棧提取後進的兩個對象進行計算,這個過程正好符合了計算機計算的原理。
後綴表達式比前綴表達式更加易於轉換,並且它的最左面一定爲數字,這一點在實際編程的時候就會體會到它的好處了。
逆波蘭表達式有一個更大的優點,就是拆括號,根據運算符的級別將中綴表達式轉換成逆波蘭表達式後,運算順序就已經替代了運算符的級別,這樣也避免了括號提高運算級別的特殊處理。
事實上,人的思維方式很容易固定~~!正如習慣拉10進制。就對2,3,4,8,16等進制不知所措一樣~~!人們習慣的運算方式是中綴表達式。而碰到前綴,後綴方式。。迷茫其實僅僅是一種表達式子的方式而已(不被你習慣的方式)我這裏教你一種也許你老師都沒跟你講的簡單轉換方式一箇中綴式到其他式子的轉換方法~~這裏我給出一箇中綴表達式~a+b*c-(d+e)
第一步:按照運算符的優先級對所有的運算單位加括號
~
        式子變成拉:
((a+(b*c))-(d+e))
第二步:轉換中綴與後綴表達式

        後綴:把運算符號移動到對應的括號後面
        則變成拉:((a(bc)*)+(de)+)-
        把括號去掉:abc*+de+-  後綴式子出現

發現沒有,前綴式,後綴式是不需要用括號來進行優先級的確定的。


轉自:

puppypuppy2005的博客

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章