從左到右檢查每個(gè)字符
創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、海珠網(wǎng)絡(luò)推廣、微信小程序開(kāi)發(fā)、海珠網(wǎng)絡(luò)營(yíng)銷、海珠企業(yè)策劃、海珠品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供海珠建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com1。如果字符是數(shù)字,直接添加到輸出隊(duì)列中
2。如果字符是左括號(hào)(,則將其添加到堆棧中
3。如果字符是右括號(hào)),則開(kāi)始退出堆棧,依次將堆棧中的元素添加到輸出隊(duì)列,直到遇到左括號(hào)“()。左括號(hào)本身沒(méi)有排隊(duì)。如果堆棧中沒(méi)有左括號(hào),則返回匹配錯(cuò)誤。
4.如果字符是非括號(hào)運(yùn)算符,請(qǐng)將字符的優(yōu)先級(jí)與堆棧元素的頂部進(jìn)行比較。如果優(yōu)先級(jí)高于堆棧的頂部,它將被放在堆棧上,否則它將被添加到輸出隊(duì)列中。
檢查完所有表達(dá)式后,堆棧中的所有剩余元素將添加到輸出隊(duì)列中。如果堆棧包含括號(hào),則返回匹配錯(cuò)誤。
最終輸出隊(duì)列是后綴表達(dá)式。
后綴表達(dá)式求值算法?中綴表達(dá)式轉(zhuǎn)換為等效后綴表達(dá)式后,計(jì)算中不再考慮運(yùn)算符的優(yōu)先級(jí),只需從左到右掃描后綴表達(dá)式即可。具體求值步驟如下:從左到右掃描后綴表達(dá)式,取出表達(dá)式中運(yùn)算符的前兩個(gè)操作數(shù),遇到運(yùn)算符時(shí)進(jìn)行運(yùn)算,然后將結(jié)果帶回后綴表達(dá)式;繼續(xù)掃描,直到后綴表達(dá)式的最后一個(gè)表達(dá)式。例如,計(jì)算后綴表達(dá)式(ABC*def*/-)的算法是設(shè)置堆棧。開(kāi)始時(shí),堆棧為空,然后從左到右掃描后綴表達(dá)式。如果遇到運(yùn)算符,它將進(jìn)入堆棧。如果遇到運(yùn)算符,它將從堆棧中退出兩個(gè)元素,首先退出的元素將放在運(yùn)算符的右側(cè),然后退出將其放在運(yùn)算符的左側(cè),然后將結(jié)果放在堆棧中,直到掃描后綴表達(dá)式。此時(shí),堆棧中只有一個(gè)元素,這是操作的結(jié)果。例如,要查找后綴表達(dá)式的值:1282-74-/*,堆棧的更改如下:
中綴轉(zhuǎn)后綴計(jì)算表達(dá)式?首先設(shè)置運(yùn)算符的堆棧st,并且只從左側(cè)掃描中綴表達(dá)式。1如果遇到數(shù)字,請(qǐng)將其直接放在后綴表達(dá)式的末尾。2如果遇到運(yùn)算符A:如果站為空,則直接將其放在堆棧上;b:循環(huán):如果堆棧st不為空,并且堆棧頂部運(yùn)算符的優(yōu)先級(jí)大于或等于當(dāng)前運(yùn)算符,則堆棧頂部運(yùn)算符將從堆棧中取出并放在后綴表達(dá)式的末尾;c:如果堆棧st不為空,且頂層運(yùn)算符的優(yōu)先級(jí)低于當(dāng)前運(yùn)算符,則直接將運(yùn)算符放在堆棧上;重復(fù)1和2,直到掃描整個(gè)中綴表達(dá)式;如果堆棧st此時(shí)不為空,位于堆棧頂部的運(yùn)算符將逐個(gè)從堆棧中取出,并逐個(gè)放置在后綴表達(dá)式的末尾。