中綴轉(zhuǎn)后綴表達(dá)式過(guò)程 后綴表達(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á)式轉(zhuǎn)換成中綴表達(dá)式?
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):把它放到堆棧中
4。遇到右括號(hào):執(zhí)行stack out操作,并輸出堆棧中的元素,直到中綴表達(dá)式彈出…]~。它是一種正常的書(shū)寫(xiě)方式,如公式a、b*C后綴表達(dá)式,又稱逆波蘭語(yǔ)表達(dá)式。中綴表示為ABC*轉(zhuǎn)換方法,公式字符串逐位判斷。當(dāng)公式中的變量被直接輸出時(shí),運(yùn)行時(shí)被放在堆棧上。當(dāng)進(jìn)入堆棧時(shí),比較頂部堆棧操作符和內(nèi)部堆棧操作符的高度,然后進(jìn)出堆棧。例如:公式:A,b*C
1,輸出A
2,放入棧(棧為空)
3,輸出b
4,*放入棧(*與棧頂元素相比,如果棧頂元素優(yōu)先級(jí)較高,則先輸出棧頂元素,否則放入當(dāng)前操作符)
5,輸出C
6,放入棧外*
7,出棧
最簡(jiǎn)單的方法是枚舉輸入變量的組合值,因此計(jì)算復(fù)雜度為2^n,其中n表示變量個(gè)數(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á)式)、鏈表和組合生成算法