前、中、字尾表示式問題
阿新 • • 發佈:2020-10-19
字首表示式:
波蘭邏輯學家J.Lukasiewicz於1929年提出的另一種表示表示式的方法。
運算子位於運算元之前,不怎麼常用。。。
字首表示式求值:
從右至左掃描,遇到表示式---->壓入堆疊、遇到操作符---->彈出棧頂的兩個元素,用這個操作符進行運算並將運算結果入棧。重複以上操作將整個表示式掃描完畢,最後棧中的元素就是結果。
中綴轉換成字首:
- 定義兩個棧s1為為運算子棧,s2為結果棧
- 從右邊開始遍歷中綴表示式
- 遇到運算元則將其壓入s2
- 遇到運算子號則比較其與s1棧頂符號的運算優先順序
5.遇到括號:
右括號 壓入s1
左括號 依次彈出s1並壓入s2直到遇到右括號為止然後再彈出右括號!!
7.若s1中有剩餘則彈出併入s2
8.按彈出順序彈出s2元素 over!
字尾表示式
也叫逆波蘭表示式(與字首相反 運算子位於運算元之後)計算機常用
字尾求值方式:從左至右掃描,遇到表示式---->壓入堆疊、遇到操作符---->彈出棧頂的兩個元素,用這個操作符進行運算並將運算結果入棧。重複以上操作將整個表示式掃描完畢,最後棧中的元素就是結果。(和字首相反)
中綴轉化為字尾:
- 定義兩個棧s1為為運算子棧,s2為結果棧
- 從左邊開始遍歷中綴表示式
- 遇到運算元則將其壓入s2
- 遇到運算子號則比較其與s1棧頂符號的運算優先順序
注意與字首的不同(第二個不包含等於)(第四點包含等於)
左括號 壓入s1
右括號 依次彈出s1並壓入s2直到遇到左括號為止然後再彈出左括號
6.重複重複直至遍歷完成
7.若s1中有剩餘則彈出併入s2
8.按彈出順序彈出s2元素 over!
具體程式後續更新。