中綴表示式:就是運算符號在數字中間的表達方式。
字尾表示式:運算符號在數字的後面出現。
1、中綴表示式向字尾表示式的轉換方法:
規則:從左到右遍歷中綴表示式的每個數字和符號,若是數字就輸出,即成為字尾表示式的一部分;若是符號,就判斷當前符號與棧頂符號的優先順序,如果是右括號或者是優先順序低於棧頂符號(乘除優先加減),則棧頂元素依次出棧並輸出(全部輸出,如果是右括號,則到左括號輸出為止),當前符號進棧,如此進行直到最終輸出字尾表示式。
例子:將中綴表示式9+(3-1)*3+10/2 轉換為字尾表示式
(1)輸出9 棧為空
(2)「+」 , 「(」依次入棧 輸出:9 3 ,緊接著「-」入棧 輸出:9 3 1
(3)下乙個符號是「)」 , 要與「(」匹配。因此棧頂符號依次出棧,直到「(」
輸出結果為:9 3 1 - , 棧內元素只剩下「+」
(4)緊接著是「*」 , 優先順序高於+ , 入棧
(5)輸出: 9 3 1 - 3
(6)「+」號優先順序低於「*」 , 因此站內元素依次出棧, 輸出: 9 3 1 - 3 * + , 再將此時的「+」入棧
(7)輸出: 9 3 1 - 3 * + 10
(8)「/」入棧
(9)輸出: 9 3 1 - 3 * + 10 2
(10)棧內所有符號出棧: 9 3 1 - 3 * + 10 2 / +
最後得到字尾表示式為:9 3 1 - 3 * + 10 2 / +
2、計算字尾表示式:
規則:從左到右依次遍歷字尾表示式,遇到數字就進棧,遇到符號就將棧頂的兩個元素進行該符號的操作。注意:棧頂的元素是符號後的數字,棧頂元素的前乙個元素是運算子的前面的數字。
例子:計算字尾表示式「9 3 1 - 3 * + 10 2 / + 」的值
(1)9 , 3 , 1 入棧 , 棧內元素: 9 3 1
(2)遇到符號「-」 , 將棧頂元素出棧,按照順序應該是: 3 - 1,得到結果2, 入棧,棧內元素為 : 9 2
(3)3 入棧,棧內元素: 9 2 3
(4)「*」 , 2,3 出棧, 2*3 = 6 , 6 進棧,棧內元素: 9 6
(5)「+」 , 9,6出棧,9+6 = 15, 15入棧,棧內元素:15
(6)10, 2 依次入棧,棧內元素:15, 10 , 2
(7)「/」 , 10 , 2 依次出棧, 10/2 = 5 , 5 入棧 , 棧內元素: 15 5
(8)「+」 , 15 5 依次出棧 , 15 + 5 = 20 , 20 入棧 , 棧內元素: 20
(9)得到結果 20
以上就是關於中綴表示式與字尾表示式的一些內容。
中綴 字尾表示式 四則運算
中綴表示式轉化為字尾表示式,並通過字尾表示式計算值 轉化規則 出棧 出棧後元素新增到字尾表示式的末尾 中綴表示式掃瞄完畢後,若棧內元素不為空,依次出棧直到棧為空,出棧元素新增到字尾表示式後 舉例 3 2 5 4 2 過程如下 建立操作符棧,以及儲存字尾表示式的佇列 從頭到尾掃瞄中綴表示式,首先掃瞄到...
中綴表示式求解四則運算
功能實現 四則運算中包含 括號 加減 乘除 小數點 樣例輸入 12.5 8 3 2 3 5 樣例輸出 2 邏輯整理 建立兩個棧,分別用來儲存數字型別和操作符型別。依次讀入每個字元,直至所有字元均遍歷完畢 判斷當前字元s是數字還是操作符 數字 由於數字的位數以及小數點情況均不確定,因此需要從當前字元的...
棧的應用 四則運算(字尾表示式)
那麼字尾表示法如何寫出來的呢?先看乙個簡單的例子 乙個中綴四則表示式 9 3 1 x3 10 2 變成字尾表示式 9 3 1 3 x 10 2 那麼它是怎麼變的呢?先別急,我們先來看看計算機是如何計算字尾表示式的。規則 從左到右遍歷表示式的每個數字和符號,遇到數字就進棧,遇到符號就將棧頂的兩個數字出...