資料結構棧的基本知識以及應用

2021-10-16 16:46:37 字數 1651 閱讀 9960

3.中綴到字尾的轉換

4.方法呼叫

棧是限制插入和刪除只能在乙個位置(表的末端即棧頂)上進行的表

棧也叫做後進先出表

push 入棧 pop 出棧 前者相當於插入 後者相當於刪除最後插入的元素

top 輸出棧頂元素

1.棧的鍊錶實現

使用單鏈表, 通過在表的頂端插入實現push, 通過刪除表頂端元素實現pop

top操作只是考查表頂端元素並返回它的值。

2.棧的陣列實現

此方法更加流行,利用thearray陣列儲存棧中元素,topofstack指示 棧頂元素位標 空棧時其為-1

元素x入棧操作:先使topofstack增1 然後置thearray[topofstack]=x。

彈出棧元素:置返回值為thearray[topofstack]然後使topofstack減1。

字尾表示式由來

字尾表示式求值過程即為中綴表示式計算順序描述過程

如由中綴表示式 4 *2 + 4 + 5 *1

計算順序可以是 將4和2相乘並存為a1,然後將4和a1相加,再將結果存入a1;再將5和1相乘並將結果存入a2,最後將a1和a2相加並將結果存入a1.

該操作順序可書寫為(即對應的字尾表示式為):4 2 * 4 + 5 1 * +

字尾表示式計算過程

當讀到乙個數時,將其推入棧中;在讀到乙個運算子時,該運算子就作用於從該棧彈出的兩個數上,在將結果推入棧中。

不斷重複上述過程直至讀完字尾表示式。

中綴到字尾的轉換規則:

1.中綴讀到運算元直接輸出

2.中綴讀到開括號(即左括號)時,當作高優先順序壓入棧中,而在棧內為低優先順序

3.中綴讀到閉括號(即右括號)時,將直到開括號的棧內元素輸出,開括號彈出但不輸出

4.讀到其他運算子時,從棧中輸出棧元素直到發現優先順序更低的棧元素為止,如棧中無優先順序更低的元素則輸出所有元素,輸出工作完成後,再將當前運算子壓入棧中

5.中綴表示式讀完後,將棧中所有元素輸出即可。

如 中綴表示式 : a + b * c + (d * e + f)*g

轉換過程 1.輸出數 a

2.將+號壓入棧

輸出 b

將*號壓入棧,因棧內沒優先順序更低的元素故不輸出

輸出c6.將棧內 * 、+ 輸出,再將+壓入棧(棧內的+ 與當前+同優先順序也輸出)

7.讀到( 當成高優先順序,壓入棧中

8.輸出d

9.將*壓入棧

輸出e將棧內 * 輸出,再將 + 壓入棧

輸出f讀到 ),將棧內+輸出

讀到 * ,棧內只有 + 故將*壓入棧

輸出g此時中綴表示式讀完,將棧內元素*、+輸出

轉化結果 a b c * + d e * f + g * +

方法呼叫時,需要儲存資訊(暫存器的值和返回位址等),所儲存的資訊又稱為活動記錄

活動記錄存放在棧頂中,方法呼叫完要返回時,獲取在棧頂的活動記錄進行相關操作,返回到主調例程對應的位置。

資料結構基本知識

資料結構基本知識 一 資料結構的基本概念 1.資料 是描述客觀事物的符號,是計算機中可以操作的物件,是能被計算機識別,並輸入給計算機處理的符號集合。解釋 簡單來說,樂壇,有成百上千的歌手,樂壇是眾多歌手的集合,可以把樂壇理解為計算機中的資料。2.資料元素 是組成資料的 有一定意義的基本單位,在計算機...

資料結構 基本知識1

資料結構是研究組成資料的資料元素的學科。資料即資訊的載體,是能夠輸入到計算機中且能被計算機識別 儲存和處理的符號總稱。資料元素由若干資料項組成,資料項是資料中的最小單位。資料型別是對資料元素取值範圍與運算的限定。資料結構 ds 可用形式化語言描述,即ds是乙個二元組 ds d,r 其中,d為資料元素...

資料結構的基本知識 演算法

下面的都是摘自 大話資料結構 書中的內容,記下來可以時時檢視 資料 描述客觀事物的符號,計算機可以操作的物件 資料元素 組成資料的有一定意義的基本單位,作為整體能被計算機處理 人是人類的資料元素,牛馬是牲畜類的資料元素 資料項 組成資料元素,人的眼睛耳朵就是人這個資料元素的資料項 注意 資料項是資料...