將中綴表示式轉換為字尾表示式的簡便方法
參考文獻:顏晶晶 張濤《將中綴表示式轉換成字尾表示式的三種方法》
http://blog.csdn.net/glldc/article/details/1818787
第一種:利用棧來實現,該方法為常規方法,論文中也有介紹,但本人認為,該方法不利於記憶,且費時,不足以應付考試的要求。再此不再贅述。
第二種:後序遍歷二叉樹法:
例:將中綴表示式a+(b-c)*d轉換成字尾表示式
第一步:畫出其對應的二叉樹;
後續遍歷該二叉樹,得到字尾表示式為:a b c - d * +
附:後續遍歷的方法:後序遍歷指在訪問根結點、遍歷左子樹與遍歷右子樹三者中,首先遍歷左子樹,然後遍歷右子樹,最後遍歷訪問根結點,在遍歷左、右子樹時,仍然先遍歷左子樹,然後遍歷右子樹,最後遍歷根結點。
第三種方法:加括號法--最簡便最有創新性的方法,足以應付考試。
加括號法就是先將待求的中級表示式依次排開, 再將每一步要計算的表示式加上括號, 最後將每個運算子移到其所在括號的外面, 這樣, 從左到右掃描得到的序列去掉括號後就
是字尾表示式。
仍然是上例:
第一步:按優先順序別, 有括號先求括號裡的原則, 將每一步要計算的表示式加上括號, 得到表示式為
( a + ( (b-c) *d ) )
第二步:將每個運算子移到其所在括號的外面, 即外移一層
abc-d*+
再例:
將中綴表示式 a+b*c-(d+e)轉換為字尾表示式:
第一步:按照運算子的優先順序對所有的運算單位加括號~
式子變成了:((a+(b*c))-(d+e))
字尾:把運算子號移動到對應的括號後面
則變成拉:((a(bc)* )+ (de)+ )-
把括號去掉:abc*+de+- 字尾式得到
相關文章
- 中綴表示式轉字尾表示式
- 中綴表示式轉化為字尾表示式並求值
- 逆波蘭演算法、中綴表示式轉字尾表示式演算法
- 【資料結構與演算法】中綴表示式轉字尾表示式以及字尾表示式的計算資料結構演算法
- 教你如何在C++中實現中綴表示式轉字尾表示式C++
- 字首中綴字尾表示式規則
- 中綴表示式轉為逆波蘭表示式
- 資料結構與演算法——棧(五)中綴表示式轉字尾表示式資料結構演算法
- 中綴轉字尾表示式思路分析和程式碼實現
- 將算數表示式轉換成字尾表示式並計算結果
- Task A1 中綴表示式轉換為逆波蘭式
- 中綴表示式
- js實現四則計算(中綴,字尾表示式)JS
- 前中字尾表示式
- 關於利用STL棧求解四則中綴表示式以及中綴表示式轉逆波蘭表示式和逆波蘭表示式的求解
- 何謂中綴表示式
- 計算中綴表示式
- C語言- 基礎資料結構和演算法 - 09 棧的應用_中綴表示式轉字尾表示式20220611C語言資料結構演算法
- 資料結構 中綴表示式轉化資料結構
- 棧的應用---字尾表示式
- 將Lucene搜尋查詢轉換為.NET的EF表示式
- 使用棧結構計算中綴表示式
- C++ 表示式中的型別轉換C++型別
- 中綴轉字尾和字首
- 【棧】【字串語法】牛牛與字尾表示式字串
- [藍橋杯 2019 省 B] 字尾表示式
- 在 Shell 中轉換 Python 正規表示式Python
- C#字尾表示式解析計算字串公式C#字串公式
- 藍橋杯2019年真題:字尾表示式
- 正規表示式的字串替換方法字串
- android 將字串轉成算術表示式Android字串
- 【正規表示式】常用的正規表示式(數字,漢字,字串,金額等的正規表示式)字串
- 使用正規表示式替換字串的方法(replace方法)字串
- SQLite中的表示式SQLite
- “正規表示式”應當稱為“規則表示式”
- 簡單介紹Idea使用正規表示式批量替換字串的方法Idea字串
- 轉義正規表示式中特殊字元字元
- [轉載] 正規表示式
- .NET 中的表示式樹