基于棧的中綴算術(shù)表達(dá)式求值 中綴表達(dá)式轉(zhuǎn)換為前綴及后綴表達(dá)式并求值c ?
中綴表達(dá)式轉(zhuǎn)換為前綴及后綴表達(dá)式并求值c ?#Include使用命名空間STD bool isoperator(char CH){char OPS[]=“-*/”for(int i=0,i)]中綴表
中綴表達(dá)式轉(zhuǎn)換為前綴及后綴表達(dá)式并求值c ?
#Include使用命名空間STD bool isoperator(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á)式求值算法?
1來(lái)計(jì)算后綴表達(dá)式。將中綴表達(dá)式轉(zhuǎn)換為等價(jià)的后綴表達(dá)式后,不需要考慮運(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á)式的值:128 2-74-/*堆棧的變化如下: