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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

前缀表达式后缀表达式_五分钟小知识之什么是后缀表达式

發(fā)布時間:2025/3/19 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前缀表达式后缀表达式_五分钟小知识之什么是后缀表达式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

點擊藍(lán)色“五分鐘學(xué)算法”關(guān)注我喲

加個“星標(biāo)”,一起學(xué)算法

后綴表達(dá)式,又稱逆波蘭式,指的是不包含括號,運算符放在兩個運算對象的后面,所有的計算按運算符出現(xiàn)的順序,嚴(yán)格從左向右進(jìn)行(不再考慮運算符的優(yōu)先規(guī)則)。

后綴表達(dá)式計算:
后綴表達(dá)式計算與前綴表達(dá)式類似,只是順序是從左至右,具體過程如下:
從左至右掃描表達(dá)式,遇到數(shù)字時,將數(shù)字壓入堆棧,遇到運算符時,彈出棧頂?shù)膬蓚€數(shù),用運算符對它們做相應(yīng)的計算(次頂元素 op 棧頂元素),并將結(jié)果入棧;重復(fù)上述過程直到表達(dá)式最右端,最后運算得出的值即為表達(dá)式的結(jié)果

例如:后綴表達(dá)式為“2 3 + 4 × 5 -”計算過程如下:
??(1)從左至右掃描,將 2 和 3 壓入堆棧;
??(2)遇到 + 運算符,因此彈出 3 和 2( 3 為棧頂元素,2 為次頂元素,注意與前綴表達(dá)式做比較),計算出 3+2 的值,得 5,再將 5 入棧;
??(3)將 4 入棧;
??(4)接下來是 × 運算符,因此彈出 4 和 5,計算出 4 × 5 = 20,將 20 入棧;
??(5)將 5 入棧;
??(6)最后是-運算符,計算出 20-5 的值,即 15,由此得出最終結(jié)果。

中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式:
與轉(zhuǎn)換為前綴表達(dá)式相似,步驟如下:
??(1)初始化兩個棧:運算符棧s1和儲存中間結(jié)果的棧s2;
??(2)從左至右掃描中綴表達(dá)式;
??(3)遇到操作數(shù)時,將其壓s2;
??(4)遇到運算符時,比較其與 s1 棧頂運算符的優(yōu)先級:
????a:如果 s1 為空,或棧頂運算符為左括號“(”,則直接將此運算符入棧;
????b:否則,若優(yōu)先級比棧頂運算符的高,也將運算符壓入 s1(注意轉(zhuǎn)換為前綴表達(dá)式時是優(yōu)先級較高或相同,而這里則不包括相同的情況);
????c:否則,將 s1 棧頂?shù)倪\算符彈出并壓入到 s2 中,再次轉(zhuǎn)到(4)-(1)與s1中新的棧頂運算符相比較;
??(5)遇到括號時:
????a:如果是左括號“(”,則直接壓入 s1;
????b:如果是右括號“)”,則依次彈出 s1 棧頂?shù)倪\算符,并壓入 s2 ,直到遇到左括號為止,此時將這一對括號丟棄;
??(6)重復(fù)步驟(2)至(5),直到表達(dá)式的最右邊;
??(7)將 s1 中剩余的運算符依次彈出并壓入 s2;
??(8)依次彈出 s2 中的元素并輸出,結(jié)果的逆序即為中綴表達(dá)式對應(yīng)的后綴表達(dá)式(轉(zhuǎn)換為前綴表達(dá)式時不用逆序)

例如,將中綴表達(dá)式“1+((2+3)×4)-5”轉(zhuǎn)換為后綴表達(dá)式的過程如下:

掃描到的元素s2(棧底->棧頂)s1 (棧底->棧頂)說明
11數(shù)字,直接入棧
+1+s1為空,運算符直接入棧
(1+ (左括號,直接入棧
(1+ ( (同上
21 2+ ( (數(shù)字
+1 2+ ( ( +s1棧頂為左括號,運算符直接入棧
31 2 3+ ( ( +數(shù)字
)1 2 3 ++ (右括號,彈出運算符直至遇到左括號
×1 2 3 ++ ( ×s1棧頂為左括號,運算符直接入棧
41 2 3 + 4+ ( ×數(shù)字
)1 2 3 + 4 ×+右括號,彈出運算符直至遇到左括號
-1 2 3 + 4 × +--與+優(yōu)先級相同,因此彈出+,再壓入-
51 2 3 + 4 × + 5-數(shù)字
到達(dá)最右端1 2 3 + 4 × + 5 -s1中剩余的運算符

得到的最終結(jié)果為:“ 1 2 3 + 4 × + 5 - ”

END

推薦閱讀

  • 蓋爾-沙普利算法告訴你,你的對象在哪里?

  • 面試官,我會寫二分查找法!對,沒有 bug 的那種!

  • 如何有效的寫算法題

  • 幾道 BAT 算法面試中經(jīng)常問的「字符串」問題

  • 鏈表算法面試問題?看我就夠了!

歡迎長按下圖關(guān)注公眾號五分鐘學(xué)算法,一起看動畫學(xué)算法。

總結(jié)

以上是生活随笔為你收集整理的前缀表达式后缀表达式_五分钟小知识之什么是后缀表达式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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