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