棧的運用 中綴表示式求值(只有圓括號)

2021-10-10 01:35:50 字數 3005 閱讀 7080

中綴表示式是我們熟悉的表示式形式。為了能正確表示運算的先後順序,中綴表示式中難免要出現括號。假設我們的表示式中只允許有圓括號。

讀入乙個浮點數為運算元的中綴表示式後,對該表示式進行運算。

要求中綴表示式以乙個字串的形式讀入,可含有加、減、乘、除運算子和左、右括號,並假設該表示式以「#」作為輸入結束符。

如輸入「3.5*(20+4)-1#」,則程式執行結果應為83。

要求可單步顯示輸入序列和棧的變化過程。並考慮演算法的健壯性,當表示式錯誤時,要給出錯誤原因的提示。

" 目前棧中左括號數量為"

<< sta.

getlength()

-1<< endl;

i = sta.

gettop()

+ ss.

size()

-1; sta.

pop();

}}if(sta.

getlength()

!=0)cout <<

"錯誤:左括號剩餘"

<< endl;

elseif(

be_number

(str)!=-

1e9+

5)cout <<

be_number

(str);}

intmain()

中綴表示式求值的方法 棧

對於像是1 2的中綴表示式,我們可以輕鬆地運用 來算出結果。但是對於1 2 2 3 4這樣的表示式,事情就變得有些複雜了.對於上述的表示式,我們可以運用棧的相關知識來解決 建立兩個棧,棧1放數字,棧2放運算子 遇到數字時入棧1 遇到運算子時,若棧2為空,則pop出棧1中的兩個數運算,將運算完的結果壓...

中綴表示式求值

中綴表示式用於計算乙個表示式,比如計算器 就是這樣實現的 這兒是用棧的資料結構來實現的。首先輸入乙個字串,表示乙個表示式,然後用乙個棧儲存數字,另外乙個棧儲存符號 如果當前運算子優先順序比棧頂元素優先順序高,則入棧,若當前運算子優先順序小於等於棧頂運算子優先順序,則從數字棧中彈出兩個元素,從符號棧中...

中綴表示式求值

表示式求值都需要2個棧。乙個是符號棧,另乙個是數字棧。拿上面的字尾式45 來說,咱們剛才將表示式從4 5轉換到45 的過程是咱們一眼就能看出來的,但是計算機不能像咱們這樣做,因為他不會。他只會從表示式的開頭,順序掃瞄表示式的每乙個字元,它不能像咱們一樣 一眼就 看 出來。計算機是如何轉換的呢?1.從...