-
所謂字尾表示式,就是把乙個@b寫成乙個b@其中前者是我們日常生活中的中綴表示式,後跟乙個字尾表示式。
例如,7*8 變為 7 8*
例如,6-9 變成 6 9-
例如,5*(3+2),字尾表示式是 5 3 2+,以知道字尾表示式沒有括號。
然後依次掃瞄符號,數字會直接進入堆疊,當遇到運算元時,前兩個數字會出堆,操作後結果會放入堆疊:
例如,5、3、2+
掃瞄 5 – > 5
掃瞄 3 – > 5 3
掃瞄 2 – > 5 3 2
掃瞄 5 – > 5
掃瞄*-25
所以你現在要解決的問題是如何將中綴表示式轉換為字尾表示式。
同樣,這是通過堆疊完成的。
從左到右掃瞄,遇到數字直接輸出,遇到優先順序堆疊或輸出的符號比較(高優先順序堆疊,小或相等的直接輸出。 左括號的優先順序大於乘法,除法大於加減法),左括號將進入堆疊,右括號將輸出堆疊中左括號中的所有符號,最後輸出堆疊中的所有符號。
例如,5、3、2+
掃瞄 5 直接輸出。
掃瞄 * 進入堆疊(堆疊內:*)。
掃瞄 ( 堆疊 (現場:*.)
掃瞄 3 直接輸出。
scan++ 的優先順序小於 (, 進入堆疊的優先順序, (in-stack: *scan2 direct output.
Scan) 掃瞄工作站中的所有輸出(之前,即輸出被 + 掃瞄到最後,堆疊中的所有東西都被輸出,即輸出被 *求和,輸出為 5 3 2 +
您可以看到此鏈結。
這也是我的。
-
你好!! 這是效果嗎,滿意了,加點多點,給你發私信。
-
算術 C 語言中共有 34 個運算子,包括常見的加法、減法、乘法和除法運算。
加法運算+減法運算 -
乘法 * 除法
餘值操作%自增自減 簡單易用。
5++ 是錯誤的。
A 和 A++ 之間的區別。
sizeof
角色:基本形式。
邏輯運算 1&&&&邏輯。
1> 使用格式。
2> 結果。
3>操作。
4> 示例。
5>注意。
邏輯或。 1> 使用格式。
2> 結果。
3>操作。
4> 示例。
5>注意。
邏輯非。 1> 使用格式。
2> 結果。
3> 示例。
4>注意。
三目操作員。
N-Mesh運算元 - >三目運算元。