前綴表達(dá)式怎么求 后綴表達(dá)式轉(zhuǎn)中綴表達(dá)式?
后綴表達(dá)式轉(zhuǎn)中綴表達(dá)式?首先,設(shè)置運(yùn)算符的堆棧st,只從左側(cè)掃描中綴表達(dá)式。1如果遇到數(shù)字,請(qǐng)將其直接放在后綴表達(dá)式的末尾。2如果遇到操作員,a:如果工作站是空的,直接放在堆棧上。B:循環(huán):如果堆棧s
后綴表達(dá)式轉(zhuǎn)中綴表達(dá)式?
首先,設(shè)置運(yùn)算符的堆棧st,只從左側(cè)掃描中綴表達(dá)式。1如果遇到數(shù)字,請(qǐng)將其直接放在后綴表達(dá)式的末尾。2如果遇到操作員,a:如果工作站是空的,直接放在堆棧上。B:循環(huán):如果堆棧st不為空,且top運(yùn)算符的優(yōu)先級(jí)大于或等于當(dāng)前運(yùn)算符,則將top運(yùn)算符從堆棧中放出來(lái),放在后綴表達(dá)式的末尾;c:如果堆棧st不為空,且top運(yùn)算符的優(yōu)先級(jí)低于當(dāng)前運(yùn)算符,則直接放運(yùn)算符在堆棧上;重復(fù)1和2,直到掃描整個(gè)中綴表達(dá)式;如果此時(shí)堆棧st不是空的,則堆棧頂部的運(yùn)算符將逐個(gè)從堆棧中取出并放置在后綴表達(dá)式的末尾。
什么是前綴表達(dá)式,中綴表達(dá)式,后綴表達(dá)式?
例如,要表達(dá)35:
35
35
35
分別是前綴、中綴和后綴表達(dá)式。前綴、中綴和后綴是指操作符號(hào)位置的差異
如何在程序中將中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式?
將中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式a b*C-(D E)的方法根據(jù)運(yùn)算符的優(yōu)先級(jí)為所有運(yùn)算單元添加括號(hào)。((a(b*c))-(D,e))變換中綴和后綴表達(dá)式后綴:將運(yùn)算符號(hào)移到相應(yīng)的括號(hào)中。((a(BC)*(DE))-去掉括號(hào),記住后綴表達(dá)式ABC*DE-可以發(fā)現(xiàn)后綴表達(dá)式不需要括號(hào)來(lái)調(diào)整操作優(yōu)先級(jí)。
前綴、中綴、后綴表達(dá)式是怎樣的?
(1)表達(dá)式有三種形式:
中綴表達(dá)式:運(yùn)算符放在兩個(gè)操作數(shù)的中間,例如:(2,1)*3;
后綴表達(dá)式:不包含方括號(hào),運(yùn)算符放在兩個(gè)操作數(shù)的后面,所有計(jì)算嚴(yán)格按照運(yùn)算符出現(xiàn)的順序從左到右進(jìn)行(不考慮運(yùn)算符的優(yōu)先級(jí)規(guī)則,如:21)3*;
前綴表達(dá)式:與后綴表達(dá)式相同,不含括號(hào),運(yùn)算符放在兩個(gè)操作數(shù)前面,如:*213。
(2)表達(dá)式計(jì)算:
由于后綴表達(dá)式中沒(méi)有括號(hào),因此無(wú)需確定優(yōu)先級(jí),并且計(jì)算嚴(yán)格從左到右進(jìn)行,因此在計(jì)算機(jī)中計(jì)算后綴表達(dá)式比計(jì)算中綴表達(dá)式簡(jiǎn)單得多。
中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式的算法思想:
·讀取數(shù)字時(shí),直接發(fā)送到輸出隊(duì)列
·讀取運(yùn)算符T時(shí),
A.在堆棧中彈出優(yōu)先級(jí)高于或等于T的所有運(yùn)算符,發(fā)送到輸出隊(duì)列;
B.T將其放在堆棧上
·讀取左括號(hào)時(shí),總是將其推入堆棧中
·讀取右括號(hào)時(shí),將其放在靠近堆棧頂部的第一個(gè)左括號(hào)中,面操作符逐個(gè)彈出,發(fā)送到輸出隊(duì)列,然后丟棄左括號(hào)。
使用后綴表達(dá)式進(jìn)行計(jì)算的具體方法如下:
·建立一個(gè)堆棧S
·從左到右讀取后綴表達(dá)式,讀取數(shù)字時(shí)將其轉(zhuǎn)換成數(shù)值并按入堆棧S,然后讀取運(yùn)算符時(shí)從堆棧中依次彈出y和X兩個(gè)數(shù)字,然后以“x運(yùn)算符Y”的形式計(jì)算結(jié)果,然后將其壓入堆棧S
·如果后綴表達(dá)式未被完全讀取,則重復(fù)其面過(guò)程,堆棧頂部的最終輸出值即為結(jié)束