中綴轉(zhuǎn)前綴表達(dá)式過(guò)程 前綴中綴后綴表達(dá)式的轉(zhuǎn)換,能幫一下嗎?
前綴中綴后綴表達(dá)式的轉(zhuǎn)換,能幫一下嗎?1. 中綴表達(dá)式變量后綴算法:遇到操作數(shù),直接輸出。2. 如果堆棧為空,則直接輸入運(yùn)算符。3. 遇到左括號(hào)時(shí),將其放在堆棧上。4. 當(dāng)遇到右括號(hào)時(shí),將執(zhí)行stac
前綴中綴后綴表達(dá)式的轉(zhuǎn)換,能幫一下嗎?
1. 中綴表達(dá)式變量后綴算法:遇到操作數(shù),直接輸出。
2. 如果堆棧為空,則直接輸入運(yùn)算符。
3. 遇到左括號(hào)時(shí),將其放在堆棧上。
4. 當(dāng)遇到右括號(hào)時(shí),將執(zhí)行stack out操作,并輸出stack out元素。直到彈出堆棧的元素是左括號(hào)。
5. 遇到其他運(yùn)算符時(shí),彈出堆棧中優(yōu)先級(jí)大于或等于運(yùn)算符的所有頂層元素,然后將運(yùn)算符放在堆棧上。最后,堆棧中的元素依次從堆棧中取出。
中綴表達(dá)式轉(zhuǎn)換為前綴及后綴表達(dá)式并求值c ?
#包括使用命名空間STD bool等運(yùn)算符(char CH){char OPS[]=“-*/”for(int i=0,i)]中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式和求值算法:中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式方法:
1。遇到的操作數(shù):直接輸出(添加到后綴表達(dá)式)
2。當(dāng)堆棧為空時(shí),遇到運(yùn)算符,直接進(jìn)入堆棧
3。遇到左括號(hào):放在堆棧上
如何在知道中綴表達(dá)式的情況下求前綴表達(dá)式?
infix expression首先轉(zhuǎn)換前綴表達(dá)式,設(shè)置操作符堆棧并從右向左掃描infix expression。如果它是一個(gè)操作數(shù),它將直接包含在前綴表達(dá)式中。如果是操作員,則檢查探測(cè)器是否為右支架。如果它是右括號(hào),它將直接包含在堆棧中。如果是左括號(hào),則逐個(gè)彈出堆棧中的運(yùn)算符,并包含在前綴表達(dá)式中,直到與右括號(hào)相交;如果是另一個(gè)運(yùn)算符,則包含在前綴表達(dá)式中,檢測(cè)堆棧頂部運(yùn)算符與當(dāng)前運(yùn)算符之間的優(yōu)先級(jí)關(guān)系。如果棧頂操作符的優(yōu)先級(jí)大于當(dāng)前操作符的優(yōu)先級(jí),則會(huì)彈出堆棧并將其分類(lèi)為前綴表達(dá)式,直到棧頂操作符的優(yōu)先級(jí)小于或等于當(dāng)前操作符的優(yōu)先級(jí)。此時(shí),當(dāng)前操作符被堆疊。掃描中綴表達(dá)式后,檢查運(yùn)算符堆棧是否為空。如果不為空,則將堆棧中的運(yùn)算符彈出到prefix expression中。最后翻轉(zhuǎn)前綴表達(dá)式,得到中綴表達(dá)式對(duì)應(yīng)的前綴表達(dá)式
(1)三種表達(dá)式形式:
中綴表達(dá)式:運(yùn)算符放在兩個(gè)操作對(duì)象之間,如:(2)中綴表達(dá)式1)*3;
后綴表達(dá)式:不含括號(hào),運(yùn)算符放在兩個(gè)操作對(duì)象之后操作對(duì)象,所有計(jì)算嚴(yán)格按照運(yùn)算符出現(xiàn)的順序從左到右進(jìn)行(不考慮運(yùn)算符的優(yōu)先級(jí)規(guī)則,如:21 3*;
前綴表達(dá)式:不包含括號(hào),就像后綴表達(dá)式一樣,運(yùn)算符放在兩個(gè)操作對(duì)象的前面,如:*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á)式?jīng)]有完全讀取,則重復(fù)它前綴表達(dá)式是一個(gè)非常有用的表達(dá)式,它將中綴表達(dá)式轉(zhuǎn)換為可以通過(guò)簡(jiǎn)單運(yùn)算得到結(jié)果的表達(dá)式。例如,(a,b)*(C,d)轉(zhuǎn)換成*、a、b、C、d,它的優(yōu)點(diǎn)是只需兩個(gè)簡(jiǎn)單的運(yùn)算,即stack-in和stack-out,就可以解決任意中綴表達(dá)式的運(yùn)算。其操作方式是:如果當(dāng)前字符(或字符串)是數(shù)字或變量,則將其推入堆棧;如果是運(yùn)算符,則堆棧頂部的兩個(gè)元素將彈出堆棧并執(zhí)行相應(yīng)的操作,然后將結(jié)果推入堆棧。前綴表達(dá)式掃描完成后,堆棧中的內(nèi)容就是中綴表達(dá)式操作的最終結(jié)果。
前綴、中綴、后綴表達(dá)式是怎樣的?
更簡(jiǎn)單的方法是枚舉輸入變量的組合值,因此計(jì)算復(fù)雜度為2^n,其中n表示變量數(shù)。當(dāng)然,因?yàn)檫壿嫳磉_(dá)式相對(duì)簡(jiǎn)單,所以最后只有*non和方括號(hào),這比四個(gè)運(yùn)算簡(jiǎn)單得多。一個(gè)建議是使用修改后的鏈表或堆棧實(shí)現(xiàn)。畢竟,輸出真值表應(yīng)該枚舉每個(gè)變量的真值。
建議的方法如下:使用鏈表或數(shù)組存儲(chǔ)表達(dá)式,并且可以自定義節(jié)點(diǎn)類(lèi)型:包括外部引用或連接以表示變量的當(dāng)前值。然后,利用堆棧進(jìn)行堆棧壓縮計(jì)算,將中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式。根據(jù)枚舉組合遍歷鏈表一次。
請(qǐng)參閱:數(shù)據(jù)結(jié)構(gòu)-堆棧-四計(jì)算(中綴表達(dá)式、后綴表達(dá)式)、鏈表和組合生成算法