逆波蘭式與表示式求值

2021-09-22 13:09:41 字數 880 閱讀 4590

波蘭式、逆波蘭式是資料結構和編譯原理裡面提到的知識點,我們平時的表示式都是這樣的2 + 3 * (5 - 1)-10(中綴表示式),這樣表示式易於閱讀和計算,但是對於計算機這樣就有點懵逼了。

字首表示式: 比如2 + 3 * (5 - 1)這個表示式的字首表示式為+ 2 * 3 - 5 1來表示  波蘭表示式

中綴序表示式:比如 2 + 3 * (5 - 1)-10

字尾表示式:比如2 + 3 * (5 - 1)用逆波蘭式來表示則是:2 3 5 1 - * +  逆波蘭表示式

求表示式值:

["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9

["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6

問題可以轉換為遍歷表示式用乙個堆來存數字,當遇見操作符的時候,彈出兩個數字執行相應的運算,再壓入堆裡面,最後返回出來的就是運算表示式的結果。

}}參考:

逆波蘭式與表示式求值

波蘭式 逆波蘭式是資料結構和編譯原理裡面提到的知識點,我們平時的表示式都是這樣的2 3 5 1 10 中綴表示式 這樣表示式易於閱讀和計算,但是對於計算機這樣就有點懵逼了。字首表示式 比如2 3 5 1 這個表示式的字首表示式為 2 3 5 1來表示 波蘭表示式 中綴序表示式 比如 2 3 5 1 ...

逆波蘭式與表示式求值

波蘭式 逆波蘭式是資料結構和編譯原理裡面提到的知識點,我們平時的表示式都是這樣的2 3 5 1 10 中綴表示式 這樣表示式易於閱讀和計算,但是對於計算機這樣就有點懵逼了。字首表示式 比如2 3 5 1 這個表示式的字首表示式為 2 3 5 1來表示 波蘭表示式 中綴序表示式 比如 2 3 5 1 ...

逆波蘭表示式求值

先得到乙個中綴表示式的資料棧s1 比如 在給定乙個儲存資料結果的棧s2,我們將會看到該棧中最後存放的是最終的表示式的值。我們從左至右的遍歷棧s1,然後按照下面的規則進行操作棧s2.1 如果遇到的是數字,那麼直接將數字壓入到s2中 2 如果遇到的是單目運算子,那麼取s2棧頂的乙個元素進行單目運算之後,...