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