栈的重要应用---四则运算
文章目錄
- 概述
- 中綴轉后綴
- 后綴表達式計算
歡迎未來的大佬前來觀看!!!
概述
棧的應用有很多,最最最最最重要的一個實現就是四則運算。對于四則運算的實現,首先需要了解兩個概念:中綴表達式和后綴表達式。
中綴表達式:通用的算術或邏輯公式表示方法。簡單的來說就是我們從小到大所學的數學運算表達式都是中綴表達式,也可以稱為標準表達式。例如8 + (5 - 2 ) × 3 + 6 ÷ 2。
后綴表達式:為了更好的解決四則運算發明的一種不帶有括號的表達式。
計算機處理四則運算一般有兩個步驟:
這兩個步驟都是通過棧來實現的。
中綴轉后綴
轉換規則:從左到右一次遍歷中綴表達式,如果是數字則輸出,如果是符號,則根據當前符號棧頂符號優先級輸出(右括號或棧頂優先級高于當前符號則輸出),然后當前符號進棧,直到輸出完成。
我們以8 + (5 - 2 ) × 3 + 6 ÷ 2為例。
1.創建一個空棧。
2.第一個字符是數字8,直接輸出,此時表達式8。
3.第二個字符是符號+,進棧,此時表達式8。
4.第三個字符是符號(,左括號沒有匹配,進棧,此時表達式8。
5.第四個字符是數字5,直接輸出,此時表達式8 5。
6.第五個字符是符號-,進棧,此時表達式8 5。
7.第六個字符是數字2,直接輸出,此時表達式8 5 2。
8.第七個字符是符號),因為有一個(與之匹配,出棧,直到遇見(為止,此時表達式8 5 2 -。
9.第八個字符是符號×,因為+優先級小于×,所以×進棧,此時表達式8 5 2 -。
10.第九個字符是數字3,直接輸出,此時表達式8 5 2 - 3。
11.第十個字符是符號+,此時的× 優先級高于+,全部出棧(注:因為沒有比+優先級更低的符號,即便棧底元素與之平級),然后+入棧,此時表達式8 5 2 - 3 * +(這里使用計算機符號*來替換×)。
12.第十一個字符是數字6,直接輸出,此時表達式8 5 2 - 3 * + 6。
13.第十二個字符是符號÷,此時的÷ 優先級高于+,入棧,此時表達式8 5 2 - 3 * + 6。
14.第十三個字符是數字2,直接輸出,此時表達式8 5 2 - 3 * + 6 2。
15.至此遍歷完成,棧中剩下的字符依次出棧,此時表達式8 5 2 - 3 * + 6 2 / +(這里使用計算機符號/來替換÷)。
后綴表達式計算
計算規則:從左到右一次遍歷后綴表達式,如果是數字則進棧,如果是符號,則出棧兩個數字進行計算,計算完成后將結果入棧,直至完成為止。
1.對于求出的后綴表達式8 5 2 - 3 * + 6 2 / +,前三個字符都是數字,依次進棧。
2.第四個字符是符號-,2和5出棧進行計算(注:此時5是被減數),得到計算結果5-2=3,入棧。
2.第五個字符是數字3,入棧,第六個字符是*,3和3出棧進行計算,得到計算結果3*3=9,入棧。
3.第七個字符是符號+,9和8出棧進行計算,得到計算結果8+9=17,入棧。緊接著第八第九字符是數字,入棧。
4.第十個字符是符號/,2和6出棧進行計算(此時6是被除數),得到計算結果6/2=3,入棧。
5.最后剩下字符+,3和17出棧進行運算,得到計算結果17+3=20,至此計算完成!!!!!
感謝您的閱讀!!!
總結
以上是生活随笔為你收集整理的栈的重要应用---四则运算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中兴tdlte认证题库vue_成都哪里可
- 下一篇: 18b20温度计报警C语言,制作DS18