描述:讀入一個只包含 +, -, *, / 的非負整數計算表達式,計算該表達式的值。
輸出:計算結果,保留兩位小數。
程序任務分為兩部分:
一。將輸入的中綴表達式轉換為后綴表達式,實現過程:
1.准備隊列保存后綴表達式(計算后綴表達式時,需要從隊首讀取數據)
准備棧保存計算符,使用找調整計算順序
2.讀輸入字符串,如果是數字,直接入后綴表達式隊列;
如果是計算符號,當計算符號棧為空或當前符號優先級大於棧頂符號優先級,直接入棧。否則依次彈出棧頂符號入后綴表達式隊列,直到遇到優先級不小於當前的符號或棧空。
如果是(直接入棧,如果是)彈出符號棧中符號入后綴表達式隊列,直到((不入隊)
3.反復2過程直到讀完所有字符串,若符號棧不為空,彈出其中所有元素入隊
二。計算后綴表達式:
計算棧
1.彈出隊列元素,如果是數字,直接入棧,如果是操作符號,彈出棧頂兩個數字計算。
P.S.第一個彈出數字是第二個數字,第二個彈出數字是第一個數字。
|temp1| 棧頂 temp2 - temp1 注意這一點,容易在減和除運算中出錯
|--------|
|temp2|
|--------|