中綴表示式轉字尾表示式
遇到「)」,依次彈出棧頂元素並輸出,直至遇到「(」後,左括號出棧
掃瞄結束後若棧中不為空依次彈出
例: 2*(9+6/3-5)+4
從左到右開始掃瞄
掃瞄到2,輸出
此時輸出串為:2運算子棧為:null
掃瞄到*,入棧
此時輸出串為:2運算子棧為:*
掃瞄到(,入棧
此時輸出串為:2運算子棧為:*(
掃瞄到 9,輸出
此時輸出串為:2 9運算子棧為:*(
掃瞄到 +,優先順序高於 ( ,入棧
此時輸出串為:2運算子棧為:*(+
掃瞄到 6 ,輸出
此時輸出串為:296運算子棧為:*(+
掃瞄到 /,優先順序大於 +,入棧
此時輸出串為:296運算子棧為:*(+/
掃瞄到 3,輸出
此時輸出串為:2963運算子棧為:*(+/
掃瞄到 -,優先順序低於 / ,所以 / 出棧並輸出,
此時輸出串為:2963/然後 - 和 +比較,因為+號在棧裡,所以+ 出棧並輸出運算子棧為:*(+
此時輸出串為:2963/+因為 - 優先順序高於 (,-入棧運算子棧為:*(
此時輸出串為:2963/+運算子棧為:*(-
遇到5,輸出
此時輸出串為:2963/+5運算子棧為:*(-
遇到 ) ,彈出 -並輸出 ,
此時輸出串為:2963/+5-遇到了 ( ,( 出棧運算子棧為:*(
此時輸出串為:2963/+5-運算子棧為:*
掃瞄到 +,優先順序低於 * ,* 出棧並輸出,然後+入棧
此時輸出串為:2963/+5-*運算子棧為:+
掃瞄到4,輸出
此時輸出串為:2963/+5-*4運算子棧為:+
掃瞄結束,將棧中元素依次出棧輸出
此時輸出串為:2963/+5-*4+運算子棧為:null
結果: 2*(9+6/3-5)+4的字尾表示式為 2963/+5-*4+
字尾表示式轉為中綴表示式
從左到右掃瞄,遇到第乙個運算子 /,緊挨著他的前面兩個相鄰的數字是6和3
執行6/3並把它們看成乙個整體的數字,如下
296/3 +5-*4+
遇到 +,緊挨著他的前面兩個相鄰的數字是9和6/3
執行9+6/3
29+6/35-*4+
遇到 - ,緊挨著他的前面兩個相鄰的數字是9+6/3和5
執行9+6/3 - 5
29+6/3-5*4+
遇到 ,緊挨著他的前面兩個相鄰的數字是2和9+6/3-5
執行2*(9+6/3 - 5)
2*(9+6/3-5)4+
遇到 +,緊挨著他的前面兩個相鄰的數字是2*(9+6/3-5)和4
執行2*(9+6/3 - 5)+4
2*(9+6/3-5)+4結果:2*(9+6/3-5)+4
字尾表示式求值
中綴表示式 字尾表示式
中綴表示式就是 a b 這樣的,運算子在兩個數的中間 字尾表示式就是 a b 這樣的,運算子在兩個數後面 再細分一下 中綴表示式 字尾表示式 a b c a b c a b c a b c a b c a b c a b c a b c a b c d e a c a b c d e a c emm...
中綴表示式 字尾表示式
數學表示式稱為中綴表示式,符合人的思考習慣 1 2 3運算子放在數字後面,符合計算機運算 123 遍歷中綴表示式中的數字和符號 左括號 入棧 運算符號 需要與棧頂符號進行優先順序比較 遍歷結束 將棧中所有符號彈出並輸出。例 中綴表示式 1 2 5 3 4 2 1 1 數字1直接輸出 結果 1 棧 空...
中綴表示式 字尾表示式
表示式 x a b c d e 的字尾表示形式可以為 c a xab cde b xa bc de c xabcd e d xabcde 表示式前字尾表達形式 乙個中綴式到其他式子的轉換方法 這裡我給出乙個中綴表示式 a b c d e 第一步 按照運算子的優先順序對所有的運算單位加括號 式子變成拉...