廢話少說直入主題
表示式可分為三類:一、字首表示式 二、中綴表示式 三、字尾表示式
字首表示式又稱為波蘭式,對應的字尾表示式又稱為逆波蘭式,中綴表示式就是我們平時看到表示式,例如:2+5=7。
中綴變成字首的步驟:
1、初始化兩個棧:s1(存放數字),s2(存放運算子)
2、表示式從右邊開始,遍歷表示式
3、遇到數字存放到s1中,運算子存放到s2中,存放運算子的規則是:
(1)如果s2是空的,或者棧頂是')',則直接入棧即可
(2)當前運算子和棧頂運算子相比較,若前面的運算子大於後面的運算子,直接入棧即可
(3)若當前運算子優先順序小於棧頂運算子優先順序,則把棧s2中的棧頂運算子放到s1棧中並重複(2)(3)
4、s2依次出棧,入s1棧
5、s1出棧,重新組成表示式即為字首表示式
中綴變成字尾的步驟:
1、初始化兩個棧:s1(存放數字),s2(存放運算子)
2、表示式從左邊開始,遍歷表示式
3、數字存放到s1中,運算子存放到s2中,存放運算子的規則是:
(1)如果s2是空的,或者棧頂是'(',則直接入棧即可
(2)當前運算子和棧頂運算子相比較,大於棧頂運算子優先順序,直接入棧即可
(3)若當前運算子優先順序小於等於棧頂運算子優先順序,則把棧s2中的棧頂運算子放到s1棧中並重複(2)(3)
(4)遇到')',運算子出棧,入s1棧,直到遇到'(','()'丟掉
4、s1依次出棧,入s2棧
5、s2出棧,重新組成表示式即為字尾表示式
中綴表示式轉換字尾表示式
中綴表示式是最自然 最易被人類理解的表達方式,但是計算機處理起來並不顯得方便,這時,字尾表示式就發揮作用了 例如 計算表示式 a b c d 的值,程式裡需要不斷的判斷運算子的優先順序,先計算括號裡的子表示式 假如我們將上述表示式轉換為字尾表示式 a b c d 你會發現現在是不需要括號了 這時我們...
表示式轉換 中綴表示式轉換為字尾表示式
算術表示式有字首表示法 中綴表示法和字尾表示法等形式。日常使用的算術表示式是採用中綴表示法,即二元運算子位於兩個運算數中間。請設計程式將中綴表示式轉換為字尾表示式。輸入格式 輸入在一行中給出不含空格的中綴表示式,可包含 以及左右括號 表示式不超過20個字元。輸出格式 在一行中輸出轉換後的字尾表示式,...
中綴表示式轉換為字尾表示式
今天我們課前談一談,要說點什麼好呢?最近小甲魚發現,很多魚油在學習資料結構和演算法的時候積極性已經開始有點下降了。甚至很多朋友懷疑資料結構和演算法到底有沒有用?實話說,在大廈的防震設計 消除疾病 防止水源枯竭這些實際問題中,很遺憾,資料結構和演算法幾乎起不到任何直接作用。那為什麼我們要學呢?很簡單,...