#44528: C++詳解


toseanlin@gmail.com (Dr. SeanXD)

學校 : 康橋雙語學校
編號 : 158065
來源 : [73.68.145.170]
最後登入時間 :
2025-03-30 09:31:37
f377. 運算式轉換 -- 資料結構 | From: [24.147.249.5] | 發表日期 : 2024-12-14 14:47

一個一個字元判斷,如果讀到字母就直接將其輸出。

宣告一個 stack,用來存運算元。當讀到一個運算元時和 stack 中的資料做比較,如果 stack 裡面沒有東西就將目前的運算元 push 到 stack 中。反之,要先判斷運算元是否是右括號「)」,如果是右括號,將 stack 中的資料從上到下依序輸出,直到遇到左括號「)」,不用輸出左括號但是要 pop 掉它。如果是其他的運算元則判斷目前運算元的優先度是否 <= stack.top() 的優先度,如果是的話就將 stack 中的資料從上到下依序輸出,但是遇到比目前這個運算元優先度還要高的運算元就要停下,或是遇到左括號也要停下。如果不是右括號最後都要將運算元 push 到 stack 中。所有運算子和運算元都判斷完之後就將 stack 中的「所有資料」從上到下輸出。

 

範例程式碼

 
ZeroJudge Forum