1. 程式人生 > >簡易計算器實現

簡易計算器實現

存儲 出了 dot 所有 span 中綴表達式 不為 表示法 波蘭表達式

中綴表達式轉後綴表達式

思路:維護一個隊列和一個棧。然後按下面過程進行處理:

①、當隊列元素為數字時

·直接保存到隊列

②、當隊列元素為加減時

·判斷棧頂的運算優先級,由於+-的優先級小於等於所有運算符

·所以循環取出棧頂的運算符並入隊列

·直到遇到棧為空、遇到左括號時才停止,最後再將當前+-入棧

③、當隊列元素為乘除時

·判斷棧頂的運算優先級,由於*/的優先級只小於等於*/

·所以循環判斷棧頂運算符,如果棧頂運算符是*/,則取出並入隊

·直到遇到棧為空、遇到左括號、遇到+-時才停止,最後再將當前*/入棧

④、當前隊列元素為左括號時

·直接入棧

⑥、當前隊列元素為右括號時

·循環將棧頂運算符出棧並入隊列

·直到遇到左括號停止,並將左括號出棧棄掉.

⑦、當隊列元素判斷結束後

·判斷棧是否為空,如果不為空,則將棧存儲的運算符出棧並入隊列


後綴表達式計算

通過逆波蘭表達式計算後綴表達式,思路如下

[註]:波蘭式是在通常的表達式中,二元運算符總是置於與之相關的兩個運算對象之前,所以,這種表示法也稱為前綴表達式。

①、遇到數字時

·入棧

②、遇到運算符時

·取出棧頂的兩個數,然後進行計算(有除法時,需要判斷除數是否為0)

·計算完成後,再將結果入棧

③、當後綴表達式隊列對空時

·表示遍歷結束,此時棧中若只剩下唯一數字,則算出了結果答案.


參考

簡易計算器實現