中綴表示式轉化為字尾表示式演算法思想細節
首先明確什麼是中綴表示式,什麼是字尾表示式。
中綴表示式是乙個通用的算術或邏輯公式表示方法, 操作符是以中綴形式處於運算元的中間(eg:3+4)。
附:中綴表示式不易被計算機處理。
字尾表示式,又稱逆波蘭式,指的是不包含括號,運算子放在兩個運算物件的後面,所有的計算按運算子出現的順序,嚴格從左向右進行(不再考慮運算子的優先規則)。
轉化思想:
首先明確中綴轉化為字尾過程中,需要轉化的部分。
轉化內容分為兩個部分運算數和運算符號。
運算數:可以分為正數和負數。也可以分為整數和小數。
運算符號:分為六種,包括加減乘除和左右括號。
特別注意:關於數字的處理要注意正負號以及加減的判別。
括號分為左括號和右括號。左括號直接進棧但不輸出,右括號直接開始出棧,直到遇到左括號為止。
乘除運算在運算轉化裡處於高階運算的行列。在運算轉化過程中,遇到乘除運算直接進棧。
加減還是正負,this is a question!
正負的條件:字串的首字母為正負號。即str[0] = ±;或者正負號的前乙個元素為(。eg:(+9),(-9)。處理後應為:9,-9。
加減的條件:不為正負即為加減。
數字或小數點直接輸出,不影響棧內元素。
**如下:
pta提交屢次出錯的原因分析:感悟:
中綴表示式轉化為字尾表示式
注意 中綴表示式需要空格隔開運算元或者操作符 關鍵有 判斷是否操作符,操作符優先順序 public class profixexpression 計算排好的字尾操作計算式 param prostr return public static intprofixcalculate string pros...
中綴表示式轉化為字尾表示式
中綴表示式轉化為字尾表示式有兩種方法,一種是利用棧,一種是把表示式轉化為樹再進一步求解,今天我們來深入了解一下這兩種方法 給出下面乙個例子 我們把中綴表示式 9 3 1 3 10 2 轉化為字尾表示式 1.首先初始化乙個空棧,用來對符號進出棧使用 2.第乙個字元是數字9,輸出9,將後面的符號 進棧 ...
中綴表示式轉化為字尾表示式
中綴表示式轉化為字尾表示式 例如 1 2 3 4 7 5 123 4 75 1 遇到數字輸出,否則進棧。2 遇到有右括號匹配棧裡的左括號,輸出棧裡的內容 3 遇到比自己比棧裡的運算子優先順序高,入棧 4 遇到比自己比棧裡的運算子優先順序低,將棧裡的運算子出棧 include include incl...