【資料結構】佇列的基礎知識(無程式碼)

love_Aym發表於2018-05-05

佇列: 是隻允許在一端進行插入操作、而在另一端進行刪除操作的線性表。

佇列是一種先進先出(FIFO)的線性表。

允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。





1、順序儲存

        先進先出,如果出一個元素意味著佇列中的所有元素都得向前移動,此時時間複雜度為O(n)。但是隊頭不需要一定在下標為0的位置。

        

        此時引入兩個指標:


   

         假設佇列的長度是有限的,那麼就可能造成新插入的元素沒有空間存放(只能尾部插入),而此時隊頭可能還有空位置卻不能用,這就造成了空間浪費,稱為“假溢位”。


此時引入迴圈佇列來改善。


迴圈佇列(需要好好畫圖理解一下)

定義:




front==rear:空佇列或者佇列滿,問題出現了!解決辦法如下



重新定義佇列滿如下:



討論佇列滿的條件:




討論佇列長度的計算公式:



迴圈佇列的入佇列操作:


迴圈佇列的出佇列操作:



2、佇列的鏈式儲存結構及其實現





入隊操作:在連結串列尾部插入結點

出對操作



迴圈佇列和鏈佇列的對比:



總結:在可以確定佇列長度最大值的情況下建議使用迴圈佇列,如果無法預估佇列長度則用鏈佇列。



相關文章