后綴表達式的計算舉例 C語言,計算器中的括號怎么做?
C語言,計算器中的括號怎么做?堆棧實現(xiàn)。帶有多個方括號的中綴表達式被轉(zhuǎn)換為后綴表達式,然后進行求值。步驟如下:從左到右檢查每個字符1。如果字符是數(shù)字,直接添加到輸出隊列中2。如果字符是左括號(,則將其
C語言,計算器中的括號怎么做?
堆棧實現(xiàn)。帶有多個方括號的中綴表達式被轉(zhuǎn)換為后綴表達式,然后進行求值。步驟如下:
從左到右檢查每個字符
1。如果字符是數(shù)字,直接添加到輸出隊列中
2。如果字符是左括號(,則將其添加到堆棧中
3。如果字符是右括號),則開始退出堆棧,依次將堆棧中的元素添加到輸出隊列,直到遇到左括號“()。左括號本身沒有排隊。如果堆棧中沒有左括號,則返回匹配錯誤。
4. 如果字符是非括號運算符,請將字符的優(yōu)先級與堆棧元素的頂部進行比較。如果優(yōu)先級高于堆棧的頂部,它將被放在堆棧上,否則它將被添加到輸出隊列中。
檢查完所有表達式后,堆棧中的所有剩余元素將添加到輸出隊列中。如果堆棧包含括號,則返回匹配錯誤。
最終輸出隊列是后綴表達式。
后綴表達式求值算法?
中綴表達式轉(zhuǎn)換為等效后綴表達式后,計算中不再考慮運算符的優(yōu)先級,只需從左到右掃描后綴表達式即可。具體求值步驟如下:從左到右掃描后綴表達式,取出表達式中運算符的前兩個操作數(shù),遇到運算符時進行運算,然后將結(jié)果帶回后綴表達式;繼續(xù)掃描,直到后綴表達式的最后一個表達式。例如,計算后綴表達式(ABC*def*/-)的算法是設(shè)置堆棧。開始時,堆棧為空,然后從左到右掃描后綴表達式。如果遇到運算符,它將進入堆棧。如果遇到運算符,它將從堆棧中退出兩個元素,首先退出的元素將放在運算符的右側(cè),然后退出將其放在運算符的左側(cè),然后將結(jié)果放在堆棧中,直到掃描后綴表達式。此時,堆棧中只有一個元素,這是操作的結(jié)果。例如,要查找后綴表達式的值:1 28 2-7 4-/*,堆棧的更改如下:
中綴轉(zhuǎn)后綴計算表達式?
首先設(shè)置運算符的堆棧st,并且只從左側(cè)掃描中綴表達式。1如果遇到數(shù)字,請將其直接放在后綴表達式的末尾。2如果遇到運算符A:如果站為空,則直接將其放在堆棧上;b:循環(huán):如果堆棧st不為空,并且堆棧頂部運算符的優(yōu)先級大于或等于當(dāng)前運算符,則堆棧頂部運算符將從堆棧中取出并放在后綴表達式的末尾;c:如果堆棧st不為空,且頂層運算符的優(yōu)先級低于當(dāng)前運算符,則直接將運算符放在堆棧上;重復(fù)1和2,直到掃描整個中綴表達式;如果堆棧st此時不為空,位于堆棧頂部的運算符將逐個從堆棧中取出,并逐個放置在后綴表達式的末尾。