中綴式轉字首式 轉字尾式

2021-07-10 07:07:23 字數 820 閱讀 9675

(1)從左向右讀取字元,新建陣列suffix用來儲存字尾表示式

(2)如果遇到『(』,入棧,繼續讀取。

(3)如果遇到『 )』,將棧頂元素依次出棧存到suffix中,直到棧頂元素為『(』,此時將棧頂元素出棧,繼續讀取。

(4)如果遇到運算子,將其與棧頂元素進行比較,如果該運算子優先順序小於等於棧頂元素,則將棧頂元素出棧,存到suffix中,直到該運算子大於棧頂元素,將其入棧。

(5)遇到運算元,直接存到suffix中。

(6)讀取完後,將棧內剩餘所有元素存到suffix中。此時suffix為字尾表達形式。

(1)從右向左讀取字元,新建陣列suffix用來儲存字首表示式

(2)如果遇到『)』,入棧,繼續讀取。

(3)如果遇到『 (』,將棧頂元素依次出棧存到suffix中,直到棧頂元素為『(』,此時將棧頂元素出棧,繼續讀取。

(4)如果遇到運算子,將其與棧頂元素進行比較,如果該運算子優先順序小於棧頂元素,則將棧頂元素出棧,存到suffix中,直到該運算子大於等於棧頂元素,將其入棧。

(5)遇到運算元,直接存到suffix中。

(6)讀取完後,將棧內剩餘所有元素存到suffix中。此時suffix為字首表達形式。

(1)讀取順序不同,轉字首式時從右向左讀取,轉字尾式時從左向右讀取。

(2)運算子入棧時,需要注意比較條件,轉字尾時因為是順序讀取字串,所以當棧頂運算級大於時必須要先出棧,保證後面計算時能先進行這個元素,同理等於的時候也是如此。但是轉字首的時候有個陷阱,就是當運算子級別一致的時候,因為是從右向左讀取的,所以此時不能將其出棧。

(3)括號處理的時候本質一樣,都是為了保證括號內的運算大於括號外的運算。

中綴式轉字尾式

棧底放 用來標記棧底,從左至右逐字讀取中綴式 a.當當前字元為數字時,直接輸出 b.當當前字元為 時,將其壓棧 c.當當前字元為 時,則彈出堆疊中最上的 之前的所有運算子並輸出,然後刪除堆疊中的 d.當當前字元為運算子時,則依次彈出堆疊中優先順序大於等於當前運算子的 到 之前為止 輸出,再將當前運算...

中綴式轉字尾式

將中綴表示式轉化為字尾表示式 我們把平時所用的標準四則運算表示式,即 9 3 1 3 10 2 叫做中綴表示式。因為所有的運算符號都在兩數字的中間,現在我們的問題就是中綴到字尾的轉化。中綴表示式 9 3 1 3 10 2 轉化為字尾表示式 9 3 1 3 10 2 下面我們來具體看看這個過程。1.初...

中綴式 字首式 字尾式 轉換

time limit 1000ms memory limit 65536kb submit statistic discuss problem description 小明在學習了資料結構之後,突然想起了以前沒有解決的算術表示式轉化成字尾式的問題,今天他想解決一下。因為有了資料結構的基礎小明很快就解...