數(shù)據(jù)結(jié)構(gòu)筆記-棧的應(yīng)用-表達(dá)式轉(zhuǎn)換問題

關(guān)鍵字:表達(dá)式啃勉、中綴忽舟、前綴、后綴淮阐、波蘭叮阅、逆波蘭

概述

在數(shù)據(jù)結(jié)構(gòu)中,棧有一個(gè)常見的應(yīng)用就是計(jì)算機(jī)中表達(dá)式的計(jì)算泣特。

基礎(chǔ)知識

中綴表達(dá)式(我們常用的寫法浩姥,通常運(yùn)算符在中間)、前綴表達(dá)式(波蘭表達(dá)式状您,通常運(yùn)算符在前面)勒叠、后綴表達(dá)式(逆波蘭表達(dá)式,通常運(yùn)算符在后面)

掌握的算法

需要掌握的是:中綴→后綴膏孟、中綴→前綴眯分、前綴→中綴、后綴→前綴柒桑,其中前綴和后綴轉(zhuǎn)換為中綴即為計(jì)算機(jī)求值的過程弊决。

中綴轉(zhuǎn)換算法總結(jié)

比較

基本算法一致,加粗字體為需要注意的不同點(diǎn)魁淳。

中綴→前綴 中綴→后綴
1.從右到左掃描飘诗。 1.從左到右掃描。
2.設(shè)置兩個(gè)空棧界逛,一個(gè)為對象棧S1昆稿,一個(gè)為運(yùn)算符棧S2(存放運(yùn)算符)。 2.設(shè)置兩個(gè)空棧息拜,一個(gè)為對象棧S1溉潭,一個(gè)為運(yùn)算符棧S2(存放運(yùn)算符)净响。
3.掃描過程遇到數(shù)或者運(yùn)算符: 3.掃描過程遇到數(shù)或者運(yùn)算符:
(1)遇到數(shù)直接壓入S1。 (1)遇到數(shù)直接壓入S1岛抄。
(2)掃描遇到運(yùn)算符時(shí):若S2為空或者S2棧頂為右括號)别惦,掃描到的運(yùn)算符直接壓入S2;若掃描到的運(yùn)算符優(yōu)先級高于等于S2棧頂運(yùn)算符夫椭,掃描到的運(yùn)算符直接壓入S2掸掸,否則(小于時(shí))從S2彈出元素壓入S1。直到將掃描到的運(yùn)算符壓入S2蹭秋,(2)步驟結(jié)束扰付。 (2)掃描遇到運(yùn)算符時(shí):若S2為空或者S2棧頂為左括號(,掃描到的運(yùn)算符直接壓入S2仁讨;若掃描到的運(yùn)算符優(yōu)先級高于S2棧頂運(yùn)算符羽莺,掃描到的運(yùn)算符直接壓入S2,否則(小于等于時(shí))從S2彈出元素壓入S1洞豁。直到將掃描到的運(yùn)算符壓入S2盐固,(2)步驟結(jié)束。
4.掃描過程遇到括號: 4.掃描過程遇到括號:
(1)遇到右括號)丈挟,直接壓入S2刁卜。 (1)遇到左括號(,直接壓入S2曙咽。
(2)遇到左括號(蛔趴,依次彈出S2元素并壓入S1,直到S2棧頂為右括號)例朱,然后丟棄這一對括號孝情。 (2)遇到右括號),依次彈出S2元素并壓入S1洒嗤,直到S2棧頂為左括號(箫荡,然后丟棄這一對括號。
5.重復(fù)3渔隶、4步驟直到掃描完畢羔挡。 5.重復(fù)3、4步驟直到掃描完畢派撕。
6.依次彈出S2元素并壓入S1婉弹。 6.依次彈出S2元素并壓入S1睬魂。
7.彈出S1所有元素终吼,輸出序列即為轉(zhuǎn)換的前綴表達(dá)式。 7.彈出S1所有元素氯哮,輸出序列的逆序即為轉(zhuǎn)換的后綴表達(dá)式际跪。

不同點(diǎn)

  1. 掃描方向:前綴為右→左商佛,后綴為左→右
  2. 掃描中運(yùn)算符比較:前綴掃描的運(yùn)算符優(yōu)先級大于等于S2棧頂運(yùn)算符即可姆打,后綴只能夠大于良姆。
  3. 掃描中括號判斷:前綴為右括號),后綴為左括號(幔戏。這里很容易理解玛追,從掃描方向來直觀感受,前綴首先遇到的就是右括號)闲延,后綴首先遇到的就是左括號(痊剖。
  4. 棧輸出序列與最終的表達(dá)式的關(guān)系:前綴相同,后綴為逆序垒玲。

計(jì)算機(jī)求值算法總結(jié)

算法

通過一個(gè)棧進(jìn)行運(yùn)算陆馁,遇到運(yùn)算符就彈出棧頂元素和次頂元素計(jì)算。

不同點(diǎn)

運(yùn)算對象的順序:前綴為棧頂元素+運(yùn)算符+次頂元素合愈,后綴為次頂元素+運(yùn)算符+棧頂元素叮贩。
記憶方法:綴為棧頂元素在綴為棧頂元素在佛析。

參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末说莫,一起剝皮案震驚了整個(gè)濱河市杨箭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌储狭,老刑警劉巖互婿,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異辽狈,居然都是意外死亡慈参,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門刮萌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來驮配,“玉大人,你說我怎么就攤上這事着茸∽扯停” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵涮阔,是天一觀的道長猜绣。 經(jīng)常有香客問我,道長敬特,這世上最難降的妖魔是什么掰邢? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任牺陶,我火速辦了婚禮,結(jié)果婚禮上辣之,老公的妹妹穿的比我還像新娘掰伸。我一直安慰自己,他們只是感情好怀估,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布狮鸭。 她就那樣靜靜地躺著,像睡著了一般多搀。 火紅的嫁衣襯著肌膚如雪怕篷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天酗昼,我揣著相機(jī)與錄音廊谓,去河邊找鬼。 笑死麻削,一個(gè)胖子當(dāng)著我的面吹牛蒸痹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播呛哟,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼叠荠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了扫责?” 一聲冷哼從身側(cè)響起榛鼎,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鳖孤,沒想到半個(gè)月后者娱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡苏揣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年黄鳍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片平匈。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡框沟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出增炭,到底是詐尸還是另有隱情忍燥,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布隙姿,位于F島的核電站梅垄,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏孟辑。R本人自食惡果不足惜哎甲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望饲嗽。 院中可真熱鬧炭玫,春花似錦、人聲如沸貌虾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽尽狠。三九已至衔憨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間袄膏,已是汗流浹背践图。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沉馆,地道東北人码党。 一個(gè)月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像斥黑,于是被迫代替她去往敵國和親揖盘。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344