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

2021-10-23 16:07:46 字數 575 閱讀 4892

初始化兩個棧:運算子棧s1和儲存中間結果的棧s2;

從左至右掃瞄中綴表示式;

遇到運算元時,將其壓s2;

遇到運算子時,比較其與s1棧頂運算子的優先順序:

1.如果s1為空,或棧頂運算子為左括號「(」,則直接將此運算子入棧;

2.否則,若優先順序比棧頂運算子的高,也將運算子壓入s1;

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

遇到括號時:(1) 如果是左括號「(」,則直接壓入s1(2) 如果是右括號「)」,則依次彈出s1棧頂的運算子,並壓入s2,直到遇到左括號為止,此時將這一對括號丟棄

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

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

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

將中綴表示式「1+((2+3)×4)-5」轉換為字尾表示式的過程如下

因此結果為

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

中綴表示式轉字尾表示式的基本規則 1.遇到運算元就直接輸出 2.遇到左括號就壓入棧中 3.遇到右括號就將棧中所有符號輸出且彈出 左括號只需要彈出不需要輸出 4.遇到操作符就與棧頂元素進行對比 當前操作符比棧頂操作符的優先順序大的話 就直接將當前操作符壓入棧中 當前操作符比棧頂操作符的優先順序小或者相...

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

對於計算機來說,字尾表示式更方便計算,但是對於我們來說,中綴表示式更方便理解。為了大家都方便,下面就聊聊如何把乙個中綴表示式借助 轉化成乙個字尾表示式。在實現轉字尾表示式時,用棧結構儲存操作符,由於中間結構不用出棧,並且如果用棧結構儲存,那麼將出棧結果逆序才是我們要的字尾表示式,所以用list儲存即...

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

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