四則運算的中綴表示式和字尾表示式

2021-07-22 04:43:27 字數 1676 閱讀 1669

中綴表示式:就是運算符號在數字中間的表達方式。

字尾表示式:運算符號在數字的後面出現。

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 那麼它是怎麼變的呢?先別急,我們先來看看計算機是如何計算字尾表示式的。規則 從左到右遍歷表示式的每個數字和符號,遇到數字就進棧,遇到符號就將棧頂的兩個數字出...