日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

栈的重要应用---四则运算

發(fā)布時(shí)間:2023/12/31 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 栈的重要应用---四则运算 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 概述
  • 中綴轉(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è)步驟:

  • 中綴表達(dá)式轉(zhuǎn)為后綴表達(dá)式
  • 后綴表達(dá)式進(jìn)行運(yùn)算
  • 這兩個(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)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。