在計算機編程中,我們使用前綴或后綴表達式進行運算往往比中綴簡單
舉例示范
中綴表達式:1 + (2 + 3) × 4 - 5
前綴表達式:- + 1 × + 2 3 4 5
后綴表達式:1 2 3 + 4 × + 5 -
對於前綴表達式- + 1 × + 2 3 4 5
,這里的前綴指的是運算符號前綴,
- + 1 × + 2 3 4 5
= (2+3)*4+1-5
可見連括號都省了。
運算過程
編程運算前綴表達式的值時,只需要用到一個棧,這個棧主要用來保存操作數。因為前綴的順序性沒有中綴那么復雜。
且編程時,往往從末尾開始讀取前綴表達式,如果讀到的是數值,均入棧;讀到的是操作符,則取2個操作數進行運算即可。
計算前綴表達式的值:- + 1 × + 2 3 4 5
- 從右至左掃描,將5,4,3,2壓入堆棧;
2)遇到+運算符,彈出2和3(2為棧頂元素,3為次頂元素),計算2+3的值,得到5,將5壓入棧;
3)遇到×運算符,彈出5和4,計算5×4的值,得到20,將20壓入棧;
4)遇到1,將1壓入棧;
5)遇到+運算符,彈出1和20,計算1+20的值,得到21,將21壓入棧;
6)遇到-運算符,彈出21和5,計算21-5的值,得到16為最終結果
后綴表達式只需要反着來,從左到右讀取即可,其他步驟類似