表示式前字尾表達形式

2021-06-21 06:13:13 字數 1560 閱讀 8580

原文:

表示式的三種形式:  

中綴表示式:運算子放在兩個運算物件中間,如:(2+1)*3;  

字尾表示式:不包含括號,運算子放在兩個運算物件的後面,所有的計算按運算子出現的順序,嚴格從左向右進行(不再考慮運算子的優先規則,如:2   1   +   3   *;  

字首表示式:同字尾表示式一樣,不包含括號,運算子放在兩個運算物件的前面,如:*   +   2   1   3。  

(2)表示式的計算:  

由於字尾表示式中沒有括號,不需判別優先順序,計算嚴格從左向右進行,故計算乙個字尾表示式要比計算機乙個中綴表示式簡單得多。    

將中綴表示式轉換為字尾表示式的演算法思想:  

·當讀到數字直接送至輸出佇列中  

·當讀到運算子t時,  

a.將棧中所有優先順序高於或等於t的運算子彈出,送到輸出佇列中;    

b.t進棧  

·讀到左括號時總是將它壓入棧中  

·讀到右括號時,將靠近棧頂的第乙個左括號上面的運算子全部依次彈出,送至輸出佇列後,再丟棄左括號。  

運用字尾表示式進行計算的具體做法:  

·建立乙個棧s  

·從左到右讀字尾表示式,讀到數字就將它轉換為數值壓入棧s中,讀到運算子則從棧中依次彈出兩個數分別到y和x,然後以「x   運算子   y」的形式計算機出結果,再壓加棧s中  

·如果字尾表示式未讀完,就重複上面過程,最後輸出棧頂的數值則為結束

35,15,+,80,70,-,*,20,/               //字尾表達方式

(((35+15)*(80-70))/20)=25           //中綴表達方式  

/,*,+,35,15,-,80,70, 20             //字首表達方式

人的思維方式很容易固定~~!正如習慣拉10進製。就對2,3,4,8,16

等進製不知所措一樣~~!

人們習慣的運算方式是中綴表示式。而碰到字首,字尾方式。。迷茫

其實僅僅是一種表示式子的方式而已(不被你習慣的方式)

我這裡教你一種也許你老師都沒跟你講的簡單轉換方式

乙個中綴式到其他式子的轉換方法~~

這裡我給出乙個中綴表示式~

a+b*c-(d+e)

第一步:按照運算子的優先順序對所有的運算單位加括號~

式子變成拉:((a+(b*c))-(d+e))

第二步:轉換字首與字尾表示式

字首:把運算符號移動到對應的括號前面

則變成拉:-( +(a *(bc)) +(de))

把括號去掉:-+a*bc+de  字首式子出現

字尾:把運算符號移動到對應的括號後面

則變成拉:((a(bc)* )+ (de)+ )-

把括號去掉:abc*+de+-  字尾式子出現

發現沒有,字首式,字尾式是不需要用括號來進行優先順序的確定的。

如果你習慣拉他的運算方法。計算的時候也就是從兩個運算元的前面

或者後面找運算子。而不是中間找,那麼也就直接可以口算拉

你不妨把你的式子做個中綴轉換。~從我給出的例子。你應該很容易找出規律拉~



表示式 前字尾表達形式

35,15,80,70,20,字尾表達方式 35 15 80 70 20 25 中綴表達方式 35,15,80,70,20 字首表達方式 人的思維方式很容易固定 正如習慣拉10進製。就對2,3,4,8,16等進製不知所措一樣 人們習慣的運算方式是中綴表示式。而碰到字首,字尾方式。迷茫 其實僅僅是一種...

表示式前字尾表達形式

35,15,80,70,20,字尾表達方式 35 15 80 70 20 25 中綴表達方式 35,15,80,70,20 字首表達方式 人的思維方式很容易固定 正如習慣拉10進製。就對2,3,4,8,16 等進製不知所措一樣 人們習慣的運算方式是中綴表示式。而碰到字首,字尾方式。迷茫 其實僅僅是一...

中 前 字尾表示式

什麼是字尾表示式 逆波蘭式 不包含括號,運算子放在兩個運算物件的後面,所有的計算按運算子出現的順序,嚴格從左向右進行 不再考慮運算子的優先規則,如 2 1 3 即2 1 3 中綴表示式 或中綴記法 是乙個通用的算術或邏輯公式表示方法,操作符是以中綴形式處於運算元的中間 例 3 4 中綴表示式是人們常...