棧的應用 四則運算 c

2021-07-29 09:55:41 字數 1091 閱讀 5644

四則運算主要分為兩個部分:

中綴轉字尾

規則為:先遍歷中綴表示式的每乙個字元,如果是數字直接輸出到字尾表示式,如果是符號,需要判斷與棧頂符號的優先順序,是右括號或者優先順序高於棧頂符號(乘除優先於加減)則依次輸出出棧並輸出,然後將當前符號壓入棧。這裡把符號分為幾類:①』(』,入棧;

②』)』,棧頂符號依次出棧並輸出直到棧頂元素為』(』,然後將當前符號入棧;

③』+』or』-『,棧頂符號依次出棧直到棧為空或者棧頂元為』(』,然後把當前符號壓入棧。

④』』 or 『/』, 為棧頂符號為』『或』/』的元素依次出棧,直到遇到其他符號或者棧為空,然後把當前符號壓棧。

最後將棧中剩餘分符號輸出。

string backtomid(string s)

else

stk.pop();

break;

case

'+':

case

'-':

while( !stk.empty() && stk.top() != '(')

stk.push(s[i]);

break;

case

'*':

case

'/':

while( !stk.empty() && ( stk.top() == '*' || stk.top() == '/' ))

stk.push(s[i]);

break;}}

}while(!stk.empty())

return ret;

}

字尾表示式計算

規則:遍歷字尾表示式,如果是數字直接入棧,如果是符號,將棧頂的兩個元素取出,進行相應的運算,將得到的運算結果重新壓入棧,最後棧頂的元素即為最終計算結果。

float caculate(string s)

i++; //跳過運算元後面的空格符

stk.push(k);

}else

stk.push(temp);}}

result = stk.top();

return result;

}

可參考:

棧應用 四則運算

輸入字串格式的算術表示式,如 3 2 輸出去結果。棧的應用 四則運算分為下列四個過程 讀取字串 並不是簡單地讀入,比如 當字串中有兩位數,例如12時,我們應該讀成 12 而不是 1 2 不然運算會出現錯誤 處理字串,給字串加0 為了保證字尾運算的正常執行,需要對出現的負數進行考慮。例如 4 3 為了...

棧的應用 簡單四則運算

思想 我們平時輸入的四則運算表示式,例如 9 3 1 2,屬於中綴表示式。我們需要將它轉換成字尾表示式 9 3 1 2 的形式求值。其中需要兩個棧 數字棧和運算子棧。過程 逐個讀取中綴表示式 char型 9 3 1 2 1.如果是數字則壓入數字棧 如果是大於一位的數字則需要寫個函式轉換成int型 2...

棧的實際應用 四則運算

四則運算 計算機在進行運算過程會先將中綴轉成字尾進行計算。中綴表示式 9 6 3 8 4 字尾表示式 96 3 84 中綴轉字尾規則 借助輔助棧,遇到數字或字母,列印 遇到符號,將當前符號與棧頂符號進行優先順序比較。如果當前符號優先順序高,則直接入棧,如果當前符號優先順序較低,則將棧頂元素依次出棧,...