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