棧的定義和特點


棧(stack)是一個特殊的線性表,是限定僅在一端(通常是表尾)進行插入和刪除操作的線性表。

又稱為后進先出(Last In First Out)的線性表,簡稱 LIFO 結構。

 

 

棧的相関概念:棧是僅在表尾進行插入、刪除操作的線性表。

表尾(即an端)稱為棧頂 Top;表頭(即a1端)稱為棧底 Base

例如:棧 s = (a1,a2,a3.....an-1,an)  a1被稱為棧底元素,an被稱為棧頂元素

插入元素到棧頂(即表尾)的操作,稱為入棧。

從棧頂(即表尾)刪除最后一個元素的操作,稱為出棧。

 

棧的示意圖:

 

操作示意圖-入棧:

 

 

操作示意圖-出棧:

 

 

 【思考】假設有3個元素a,b,c,入棧順序是a,b,c 則他們的出棧順序有幾種可能

入棧順序:a進入后,b進入,最后c進入

出棧順序:(先進后出)所以得到,c,b,a這種出棧順序

也可以:a入棧,接着a出棧;b入棧,接着b出棧;c入棧,接着c出棧。

還可以:a入棧,接着a出棧;b入棧,c入棧,接着c出棧,b出棧。

還可以:a入棧,b入棧,b出棧,a出棧,c入棧,c出棧

總結一下:

棧的定義:限定只能在表的一端進行插入和刪除運算的線性表(只能在棧頂操作)

邏輯結構:與同線性表相同,仍為一對一關系。

存儲結構:用順序棧(用順序存儲的話,就叫順序棧)或鏈棧(用鏈式存儲的話,就叫鏈棧)存儲均可,但以順序棧更常見

運算規則:只能在棧頂運算,且訪問結點時依照后進先出(LIFO)的原則

實現方式:關鍵是編寫入棧和出棧函數,具體實現依順序棧和鏈棧的不同而不同

棧與一般線性表的區別:僅在於運算規則不同。,

一般線性表

邏輯結構:一對一

存儲結構:順序表、鏈表

邏輯結構:一對一

存儲結構:順序棧、鏈棧


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM