目錄
一、熟悉的算數表達式
由三個部分組成:操作數、運算符、界限符
界限符是必不可少的,反映了計算的先後順序
二、波蘭數學家的靈感
可以不用界限符也能無歧義地表達運算順序
逆波蘭表達式=後綴表達式、波蘭表達式=前綴表達式
三、中綴、後綴、前綴表達式
中綴表達式:運算符在兩個操作數中間。a + b、a + b - c、a + b - c * d
後綴表達式:運算符在兩個操作數後面。a b +、a b + c -、a b + c d * -
前綴表達式:運算符在兩個操作數前面。+a b 、- + a b c、- + a b * c d
中綴轉後綴的手算方法:
①確定中綴表達式中各個運算符的運算順序
②選擇下一個運算符,按照[左操作數 右操作數 運算符]的方式組合成一個新的操作數
③如果還有運算符沒被處理,就繼續②
左優先原則,不要FreeStyle,保證手算和計算結果相同
“左優先”原則:只要左邊的運算符能先計算,就優先算左邊的,保證運算順序唯一
後綴表達式的計算(手算):
從左往右掃描,每遇到一個運算符,就讓運算符前面最近的兩個操作數執行對應運算,合體爲一個操作數
注:兩個操作數的左右順序
後綴表達式的計算(機算):
用找實現後綴表達式的計算
①從左往右掃描下一個元素,直到處理完所有元素
②若掃描到操作數則壓入棧,並回到①,否則執行③
③若掃描到運算符,則彈出兩個棧頂元素,執行相應運算,運算結果壓回棧頂,回到①
注:先出棧的是“右操作數”,若表達式合法,則最後棧中只會留下一個元素,就是最終結果
中綴轉前綴的手算方法:
①確定中綴表達式中各個運算符的運算順序
②選擇下一個運算符,按照【運算符 左操作數 右操作數】的方式組合成一個新的操作數
③如果還有運算符沒被處理,就繼續②
“右優先”原則:只要右邊的運算符能先計算,就優先算右邊的
前綴表達式的計算(機算):
用棧實現前綴表達式的計算:
①從右往左掃描下一個元素,直到處理完所有元素
②若掃描到操作數則壓入棧,並回到①;否則執行③
③若掃描到運算符,則彈出兩個棧頂元素,執行相應運算,運算結果壓回棧頂,回到①
注:先出棧的是“左操作數”
四、總結