資料結構06 棧 中綴 字首 字尾

2021-09-29 14:06:16 字數 738 閱讀 6543

1.字首表示式(波蘭表示式):運算子位於運算元之前 - * + 3 4 5 6

求值機制:自右向左掃瞄整個字首表示式,遇到數字壓棧;遇到運算子,彈出棧頂和次棧頂元素,

進行計算後重新入棧

2.中綴表示式:就是我們常見的表示式(3+4)*5-6

3.字尾表示式(逆波蘭表示式):運算子位於運算元之後 3 4 + 5 * 6 -

求值機制:自左向右掃瞄整個字尾表示式,遇到數字時壓棧;遇到運算子時,彈出棧頂和次棧頂

元素,進行計算後重新入棧

1.初始化兩個棧:運算子棧s1和中間結果的棧s2

2.從左至右掃瞄中綴表示式

3.遇到運算元時,將其壓入s2中

4.遇到操作符時,比較其餘s1棧頂運算子的優先順序

(1)如果s1為空,或棧頂運算子為左括號"(",則直接將此符號壓入s1

(2)如果優先順序比棧頂運算子優先順序高,也將符號壓入s1中

(3)否則,將s1棧頂的運算子彈出並壓入s2中,再次轉到4.(1)與s1中新的

棧頂運算子進行比較

5.遇到括號時:

(1)如果是左括號"(",則直接入棧

(2)如果是右括號")",則依次彈出s1棧頂的運算子,並壓入s2,直到遇到

左括號"("為止,此時將這一對括號丟棄

6.重複步驟2至5,直到掃瞄到表示式的最右邊

7.將s1中剩餘的運算子依次彈出,並壓入s2中

8.依次彈出s2中的元素並輸出,結果的逆序即為中綴表示式對應的字尾表示式

資料結構 棧 中綴 字尾 字首相互轉換

中綴 正常表示式 字尾 逆波蘭式 1 棧中存符號 2 字母 數字直接列印 3 先進棧,再比較優先順序,只有當比棧中前乙個符號優先順序高的情況下才走下去,否則彈出前乙個符號,直至前乙個符號的優先順序小於這個符號,也即是連續彈棧。4 列印的時候遇到括號不計在內,但是在棧中括號是被儲存過的,當遇到 時,按...

資料結構 字首 中綴 字尾表示式

字首表示式 字首表示式是一種沒有括號的算數表示式,它將運算子寫在前面,運算元寫在後面 中綴表示式 操作符處於運算元的中間。中綴表示式是人們常用的算術表示方法 字尾表示式 運算子位於運算元之後 字首表示式 123 中綴表示式 1 2 3 7 字尾表示式 12 5 6 1 字首表示式 規則 從右向左遍歷...

資料結構棧之中綴表示式轉字尾

對於乙個中綴表示式,假設a b a b 我們對它從左至右進行遍歷,當遇到運算元時直接輸出 當遇到操作符且棧為空時,將操作符壓入棧 當遇到左括號時,將其入棧 當遇到右括號時,將棧中左括號上面的元素依次出棧並輸出,最後將左括號出棧 但不輸出 當遇到操作符時 此時棧非空 當棧頂元素也為操作符且優先順序大於...