~c語言 C語言運(yùn)用棧求表達(dá)式的值?
C語言運(yùn)用棧求表達(dá)式的值?每次從數(shù)字堆棧的頂部取兩個數(shù)字,從符號堆棧中取一個符號操作,然后將結(jié)果按入數(shù)字堆棧的頂部。在這種情況下,只重復(fù)堆棧中的一個符號,直到結(jié)果為空。C語言,計(jì)算器中的括號怎么做?堆
C語言運(yùn)用棧求表達(dá)式的值?
每次從數(shù)字堆棧的頂部取兩個數(shù)字,從符號堆棧中取一個符號操作,然后將結(jié)果按入數(shù)字堆棧的頂部。在這種情況下,只重復(fù)堆棧中的一個符號,直到結(jié)果為空。
C語言,計(jì)算器中的括號怎么做?
堆棧實(shí)現(xiàn)。帶有多個方括號的中綴表達(dá)式被轉(zhuǎn)換為后綴表達(dá)式,然后進(jìn)行求值。步驟如下:
從左到右檢查每個字符
1。如果字符是數(shù)字,直接添加到輸出隊(duì)列中
2。如果字符是左括號(,則將其添加到堆棧中
3。如果字符是右括號),則開始退出堆棧,依次將堆棧中的元素添加到輸出隊(duì)列,直到遇到左括號“()。左括號本身沒有排隊(duì)。如果堆棧中沒有左括號,則返回匹配錯誤。
4. 如果字符是非括號運(yùn)算符,請將字符的優(yōu)先級與堆棧元素的頂部進(jìn)行比較。如果優(yōu)先級高于堆棧的頂部,它將被放在堆棧上,否則它將被添加到輸出隊(duì)列中。
檢查完所有表達(dá)式后,堆棧中的所有剩余元素將添加到輸出隊(duì)列中。如果堆棧包含括號,則返回匹配錯誤。
最終輸出隊(duì)列是后綴表達(dá)式。