中綴表示式轉換成字尾表示式並求值

2023-03-10 23:30:13 字數 2553 閱讀 5367

1樓:海天盛

1.中綴表示式字尾演算法:遇到運算元,直接輸出。

2.棧是空的,遇到操作符,直接推棧。

3.當遇到開括號時,按下它,如下圖所示。

4.當遇到右括號時,執行out操作並開始輸出out元素。直到彈出堆疊的元素是一個開括號。

5.當遇到其他操作符時,彈出該操作符大於或等於堆疊頂部的所有優先順序元素,然後將該操作符推入堆疊。最後,將堆疊中的元素推出堆疊。

2樓:網友

1、中綴表示式變字尾的演算法:遇到運算元,直接輸出。

2、棧為空是,遇到運算子,直接入棧。

3、遇到左括號時,將其入棧。

4、遇到右括號時,執行出棧操作,並且開始將出棧的元素輸出。直到彈出棧的元素是左括號為止。

5、遇到其他運算子的時候,彈出所有優先順序大於等於該運算子棧頂元素,然後將該運算子入棧。最終將棧中的元素依次出棧。

3樓:

中綴轉字尾表示式:設計兩個棧,一個是字元型的,存放運算子,用以將算數表示式變成無括號的表示式;另一個是浮點型的,存放運算元,用以對無符號的表示式求值。要先假設運算子的優先順序:

首先將一個左括號『(』進棧,作為棧底元素;接著從左到右對算數表示式進行掃描,每次讀一個字元,若遇到左括號『(』則進棧; 若遇到的是運算元,則立即輸出; 若又遇到運算子,如果他的優先順序比棧頂元素的優先順序高的話,則直接進棧,否則輸出棧頂元素,直到新的棧頂元素的優先順序比他低的時候,將他壓棧; 若遇到的是右括號『)』則將棧頂的運算子輸出,知道棧頂的元素為『(』談後,左右括號互相抵消; 如果最終,我們要掃描的表示式結束,就將棧中的運算子全部輸出,消除棧底的左括號『(』

我也是剛學,資料結構上用到的,你看看對你有沒有幫助吧。

4樓:求求你啦幫忙

我可以幫個小忙,樹學過嗎?把字尾表示式換成中綴我會,把表示式換成樹的形式和順序;樹其實很簡單,看看就好了,用樹比較好理解。

5樓:網友

一箇中綴式到其他式子的轉換方法~~

這裡我給出一箇中綴表示式~

a+b*c-(d+e)

第一步:按照運算子的優先順序對所有的運算單位加括號~式子變成拉:((a+(b*c))-d+e))第二步:轉換字首與字尾表示式。

字首:把運算子號移動到對應的括號前面。

則變成拉:-(a *(bc)) de))把括號去掉:-+a*bc+de 字首式子出現字尾:把運算子號移動到對應的括號後面。

則變成拉:((a(bc)* de)+ 把括號去掉:abc*+de+- 字尾式子出現。

字尾表示式求值演算法

6樓:蘑菇飯資訊

將中綴表示式轉換成等價的字尾表示式後,求值時,不需要再考慮運算子的優先順序,只需從左到右掃描一遍字尾表示式即可。具體求值步驟為:從左到右掃描字尾表 達式,遇到運算子就把表示式中該運算子前面兩個運算元取出並運算,然後把結果帶回字尾表示式;繼續掃描直到字尾表示式最後一個表示式。

例如,字尾表示式(abc*+def*/-的求值2 字尾表示式的求值的演算法。

設定一個棧,開始時,棧為空,然後從左到右掃描字尾表示式,若遇運算元,則進棧;若遇運算子,則從棧中退出兩個元素,先退出的放到運算子的右邊,後退出的 放到運算子左邊,運算後的結果再進棧,直到字尾表示式掃描完畢。此時,棧中僅有一個元素,即為運算的結果。

例,求字尾表示式:1 2 + 8 2 - 7 4 - 的值,棧的變化情如下:

簡單的解釋下字尾表示式

7樓:匿名使用者

實現多位數的運算,要將多位數的string型別轉換為數值型別。才能實現入棧,轉換函式。

atoi(),atol(),strtod(),strtol(),strtoul()

如何把算術表示式轉化為字尾表示式

8樓:蒼勤媯瑪麗

表示式的三種形式:

中綴表示式:運算子放在兩個運算物件中間,如:(2+1)*3

字尾表示式:不包含括號,運算子放在兩個運算物件的後面,所有的計算按運算子出現的順序,嚴格從左向右進行(不再考慮運算子的優先規則,如:2

字首表示式:同字尾表示式一樣,不包含括號,運算子放在兩個運算物件的前面,如:*

表示式的轉換:

將中綴表示式轉換為字尾表示式的演算法思想:數字時,加入字尾表示式;

運算子:a.若為最低階的運算子,入棧;

b.若為。「(入棧;

c.若為「)」則把棧中的的運算子加入字尾表示式中,直到。

「(」從棧中刪除「(」

d.若為不是最低階的運算子,則將從棧頂到第一個優先順序不大於(小於,低於或等於)它的運算子(或。

「(」但優先滿足前一個條件)之間的運算子加入字尾表示式中,該運算子再入棧;

當掃描的中綴表示式結束時,棧中的的所有運算子出棧;

運用字尾表示式進行計算的具體做法:

建立一個棧s,左到右讀字尾表示式,讀到數字就將它轉換為數值壓入棧s中,讀到運算子則從棧中依次彈出兩個數分別到y和x,然後以「x

運算子y」的形式計算機出結果,再壓加棧s中,果字尾表示式未讀完,就重複上面過程,最後輸出棧頂的數值則為結束。

算術表示式abcde轉為字尾表示式是?具體分析

轉為字尾表示式是 abcde a b c d e a b c d e 通過根據運算子的優先順序將所有算術單元括起來,該表示式變為 a b c d e 然後轉換字尾表示式。字尾 將操作符號移到相應的括號之後,然後變為 a b c de 除去括號後的表示式是字尾表示式 abcde 轉化後的字尾表示式為 ...

對for表示式1表示式3可理解為

for 表示式1 表示式2 表示式3 其中 表示式1 通常為賦值表示式,用來確定迴圈結構中的控制迴圈次數的變數的初始值,實現迴圈控制變數的初始化。表示式2 通常為關係表示式或邏輯表示式,用來判斷迴圈是否繼續進行的條件,將迴圈控制變數與某一值進行比較,以決定是否退出迴圈。表示式3 通常為表示式語句,用...

關於逗號表示式的問題,C語言逗號表示式

x 4,y 11 第三行和第四行都是逗號表示式,但是有區別 第三行中x a 1是逗號表示式的第一個式子,b 6是第二個式子 所以x a 1 4 第四行中的a 1和b 6組成逗號表示式,逗號表示式的值付給y,所以b 6等於11付給y。我想可能是這樣 x 4,y 11 逗號好像是最低階的,那x a 1 ...