簡易計算器實現
阿新 • • 發佈:2018-10-05
存儲 出了 dot 所有 span 中綴表達式 不為 表示法 波蘭表達式
中綴表達式轉後綴表達式:
思路:維護一個隊列和一個棧。然後按下面過程進行處理:
①、當隊列元素為數字時
·直接保存到隊列
②、當隊列元素為加減時
·判斷棧頂的運算優先級,由於+-的優先級小於等於所有運算符
·所以循環取出棧頂的運算符並入隊列
·直到遇到棧為空、遇到左括號時才停止,最後再將當前+-入棧
③、當隊列元素為乘除時
·判斷棧頂的運算優先級,由於*/的優先級只小於等於*/
·所以循環判斷棧頂運算符,如果棧頂運算符是*/,則取出並入隊
·直到遇到棧為空、遇到左括號、遇到+-時才停止,最後再將當前*/入棧
④、當前隊列元素為左括號時
·直接入棧
⑥、當前隊列元素為右括號時
·循環將棧頂運算符出棧並入隊列
·直到遇到左括號停止,並將左括號出棧棄掉.
⑦、當隊列元素判斷結束後
·判斷棧是否為空,如果不為空,則將棧存儲的運算符出棧並入隊列
後綴表達式計算:
通過逆波蘭表達式計算後綴表達式,思路如下
[註]:波蘭式是在通常的表達式中,二元運算符總是置於與之相關的兩個運算對象之前,所以,這種表示法也稱為前綴表達式。
①、遇到數字時
·入棧
②、遇到運算符時
·取出棧頂的兩個數,然後進行計算(有除法時,需要判斷除數是否為0)
·計算完成後,再將結果入棧
③、當後綴表達式隊列對空時
·表示遍歷結束,此時棧中若只剩下唯一數字,則算出了結果答案.
參考
簡易計算器實現