後綴(逆波蘭)表示法定義:全部的符號都是在要運算數字的後面出現。spa
中綴表達式:a+b*c+(d*e+f)/g遍歷
後綴表達式:abc*+de*f+g/+di
示例:2+3*2+(2*3+4)/2 = 13數字
232*+23*4+2/+ = 13運算符
後綴表達式的運算:ab
1.掃描後綴表達式:
①若是是數字,則讓其進棧
②若爲操做符,則從棧中取出兩個操做數,先取出的做爲右操做數,後取出的做爲左操做數,而後進行該操做符的運算,並使其結果入棧。
③重複上述過程,直至表達式掃描完成。
2.最終棧中只留一個元素—–>即就是結果。
中綴表達式轉化成後綴表達式:
1.遇到操做數,直接輸出;
2.棧爲空時,遇到運算符,入棧;
3.遇到左括號,將其入棧;
4.遇到右括號,執行出棧操做,並將出棧的元素輸出,直到彈出棧的是左括號,左括號不輸出;
5.遇到其餘運算符「+」、「-」、「*」、「÷」時,彈出全部優先級大於或等於該運算符的棧頂元素,而後將該運算符入棧;
6.最終將棧中的元素依次出棧,輸出。
示例:
例如將 9 + (3 - 1) X 3 + 10 / 2 轉換成後綴表達式,過程以下: 一、9是數字,輸出,表達式爲:9; 二、「 + 」進棧,「 ( 」進棧,棧內容爲:+ (; 三、數字3輸出,表達式爲:9 3; 四、「 - 」進棧,棧內容爲:+ ( -; 五、數字1輸出,表達式爲:9 3 1; 六、遇到「 ) 」,根據規則,棧中符號出棧直到「 ( 」出棧爲止,此間遇到「 - 」須要輸出,所以表達式爲:9 3 1 -,棧中內容爲:+; 七、遇到「 X 」,因爲它的優先級比棧頂元素「 + 」高,所以它進棧,棧中內容爲:+ X; 八、遇到數字3輸出,表達式爲:9 3 1 - 3; 九、以後是「 + 」,優先級比棧頂的「 X 」低,「 X 」出棧輸出,「 + 」變成棧頂,棧頂的「 + 」優先級並不大於外面的「 + 」,所以也須要出棧輸出,此時棧爲空了,那麼表達式爲:9 3 1 - 3 X +,同時外面的「 + 」進棧,棧中內容爲:+; 十、遇到10輸出,表達式爲:9 3 1 - 3 X + 10; 十一、遇到符號「 / 」,優先級比棧頂元素「 + 」高,進棧,棧中內容爲:+ /; 十二、數字2輸出,表達式爲:9 3 1 - 3 X + 10 2; 1三、遍歷結束,棧不爲空,棧中符號依次出棧輸出,最後表達式爲:9 3 1 - 3 X + 10 2 / +。