常見的算術表示式,稱為中綴表示式,例如:
5 + ( 6 – 4 / 2 ) * 3
波蘭表示式也稱為字首表示式,以上面的例子為例,其波蘭表示式為:
+ 5 * - 6 / 4 2 3
(1)首先設定乙個操作符棧,從右到左順序掃瞄整個中綴表示式:
(2)當掃瞄完畢整個中綴表示式後,檢測操作符棧是否為空,如果不為空,則依次將棧中操作符彈棧,歸入字首表示式。
(3)最後,將字首表示式翻轉,得到中綴表示式對應的字首表示式。
對字首表示式從後向前掃瞄,設定乙個運算元棧,如果是運算元,則將其直接入棧。
如果是操作符,則從棧中彈出操作符對應的運算元進行運算,並將計算結果壓棧。
直至從右到左掃瞄完畢整個字首表示式,這時運算元棧中應該只有乙個元素,該元素的值則為字首表示式的計算結果。
逆波蘭表示式也稱為字尾表示式,以上面的例子為例,其逆波蘭表示式為:
5 6 4 2 / - 3 * +
(1)自右向左順序掃瞄整個中綴表示式;
(2)當掃瞄完畢整個中綴表示式後,檢測操作符棧是否為空,如果不為空,則依次將棧中操作符彈棧,歸入字尾表示式。
從左到右順序掃瞄整個字尾表示式;
如果是運算元,則將該運算元壓入到棧中;
如果是操作符,則從棧中彈出對應的運算元,注意運算元的順序;根據操作符進行運算,並將結果重新壓入到棧中;
直至將整個棧掃瞄完畢;
如果字尾表示式是合法的,則掃瞄完畢後,棧中只有乙個元素,該元素的值即為字尾表示式的結果。
};參考:
波蘭表示式與逆波蘭表示式
js實現逆波蘭式
波蘭表示式 逆波蘭表示式
中綴表示式是最常見的運算表示式,如 3 5 2 6 1 波蘭表示式又稱為字首表示式,它是由中綴表示式經過一定的方式轉換來的 比如中綴表示式為 3 5x 2 6 1 對應的字首表示式為 3 x 5 2 6 1 對於中綴表示式從右向左遍歷轉換為字首表示式,中途要是用棧進行儲存 轉換規則如下 波蘭表示式 ...
波蘭逆波蘭表示式
實現乙個基本的計算器來計算簡單的表示式字串。表示式字串只包含非負整數,算符 左括號 和右括號 整數除法需要 向下截斷 你可以假定給定的表示式總是有效的。所有的中間結果的範圍為 231,231 1 class solution s2.push s.substr l,r l l r 碰見符號 else ...
波蘭表示式與逆波蘭表示式
2018年09月03日 11 29 15 jitwxs 閱讀數 70 標籤 波蘭 字首 更多 個人分類 演算法與資料結構 常見的算術表示式,稱為中綴表示式,例如 5 6 4 2 3波蘭表示式也稱為字首表示式,以上面的例子為例,其波蘭表示式為 5 6 4 2 3中綴表示式轉換字首表示式的操作過程為 1...