1. 程式人生 > >數據結構(棧和隊列)

數據結構(棧和隊列)

元素 相對 指針 棧的順序存儲結構 size 入隊 單鏈表實現 特性 頭節點

一、棧(Stack)

基本概念:只允許在一端進行插入或刪除操作的線性表。

棧頂(Top):線性表語序進行插入和刪除的那一端。

棧底(Bottom):固定的,不允許進行插入和刪除的那一端。

空棧:不含任何元素的的空表。

棧的順序存儲結構:棧的順序存儲成為順序棧,他是利用一組地址連續的存儲單元存放在棧底刀棧頂的數據元素,同時附設一個指針(top)只是當前棧頂的位置。

  >>>共享棧:利用棧底位置相對不變的特性,可以讓兩個順序棧共享一個一維數據空間,將兩個棧的棧底分別設置在共享空間的兩端,兩個棧頂向共享空間的中間延伸。

棧的鏈式存儲結構:采用鏈式存儲的棧成為鏈棧,鏈棧的優點是便於多個棧共享存儲空間和提高其效率,且不存在棧滿上溢的情況,通常采用單鏈表實現,並規定所有操作都是在單鏈表的表頭的進行的。采用鏈式存儲,便於節點的插入和刪除,鏈棧的操作與鏈表類似。

二、隊列(Quene)

基本概念:隊列簡稱隊,也是一種操作受限的線性表,只允許在表的一端進行插入,而在表的另一端進行刪除,向隊列中插入元素成為入隊會進隊,刪除元素成為出隊或離隊。其操作的特性是先進先出(First In First Out,FIFO),故又成為先進先出的線性表。

隊列的存儲結構:隊列的順序實現是指分配一塊的存儲單元存放在隊列中元素,並附設兩個指針front和rear分別指示隊頭元素和隊尾元素的位置。

  >>>隊列的鏈式存儲結構隊列的鏈式表成為鏈式表示成為鏈隊列,它實際上是一個同事帶有隊頭指針和隊尾指針的單鏈表,頭指針指向隊頭節點,尾指針指向隊尾節點。

雙端隊列:

雙端隊列指允許兩端都可以進行入隊和出隊操作的隊列。包括輸出受限的雙端隊列:語序在一段進行插入和刪除;輸入受限的雙端隊列:語序在一端進行插入和刪除。

數據結構(棧和隊列)