【資料結構】佇列的基礎知識(無程式碼)
佇列: 是隻允許在一端進行插入操作、而在另一端進行刪除操作的線性表。
佇列是一種先進先出(FIFO)的線性表。
允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。
1、順序儲存
先進先出,如果出一個元素意味著佇列中的所有元素都得向前移動,此時時間複雜度為O(n)。但是隊頭不需要一定在下標為0的位置。
此時引入兩個指標:
假設佇列的長度是有限的,那麼就可能造成新插入的元素沒有空間存放(只能尾部插入),而此時隊頭可能還有空位置卻不能用,這就造成了空間浪費,稱為“假溢位”。
此時引入迴圈佇列來改善。
迴圈佇列(需要好好畫圖理解一下)
定義:
front==rear:空佇列或者佇列滿,問題出現了!解決辦法如下:
重新定義佇列滿如下:
討論佇列滿的條件:
討論佇列長度的計算公式:
迴圈佇列的入佇列操作:
迴圈佇列的出佇列操作:
2、佇列的鏈式儲存結構及其實現
入隊操作:在連結串列尾部插入結點
出對操作
迴圈佇列和鏈佇列的對比:
總結:在可以確定佇列長度最大值的情況下建議使用迴圈佇列,如果無法預估佇列長度則用鏈佇列。
相關文章
- 【資料結構】棧的基礎知識(無程式碼)資料結構
- 【資料結構】串的基礎知識(無程式碼)資料結構
- Rust中陣列資料結構基礎知識Rust陣列資料結構
- 【資料結構】佇列(順序佇列、鏈佇列)的JAVA程式碼實現資料結構佇列Java
- 公共基礎知識-資料結構-樹資料結構
- 實戰PHP資料結構基礎之佇列PHP資料結構佇列
- 資料結構基礎學習之(棧和佇列)資料結構佇列
- 【資料結構】二叉樹的基礎知識資料結構二叉樹
- 【資料結構基礎】佇列簡介(使用ES6)資料結構佇列
- 資料結構 - 佇列資料結構佇列
- 資料結構-佇列資料結構佇列
- 【資料結構-----佇列】資料結構佇列
- 資料結構與演算法之基礎知識資料結構演算法
- Java版-資料結構-佇列(陣列佇列)Java資料結構佇列陣列
- 資料結構-佇列、棧資料結構佇列
- 資料結構之「佇列」資料結構佇列
- 資料結構-佇列-樹資料結構佇列
- 重溫四大基礎資料結構:陣列、連結串列、佇列和棧資料結構陣列佇列
- JavaScript 的資料結構和演算法 - 佇列篇 (附程式碼)JavaScript資料結構演算法佇列
- 基礎資料結構之陣列資料結構陣列
- Java版-資料結構-佇列(迴圈佇列)Java資料結構佇列
- 達夢資料庫基礎知識(二)資料庫邏輯結構資料庫
- C++資料結構-佇列C++資料結構佇列
- JavaScript資料結構之-佇列JavaScript資料結構佇列
- 資料結構之佇列(Queue)資料結構佇列
- 資料結構(棧和佇列)資料結構佇列
- 資料結構-棧與佇列資料結構佇列
- js資料結構--佇列(queue)JS資料結構佇列
- JavaScript資料結構03 – 佇列JavaScript資料結構佇列
- JavaScript資料結構之佇列JavaScript資料結構佇列
- 資料結構—棧和佇列資料結構佇列
- JavaScript資料結構03 - 佇列JavaScript資料結構佇列
- 資料結構筆記——佇列資料結構筆記佇列
- Redis基礎知識(學習筆記1--五種基礎資料結構)Redis筆記資料結構
- 惡補基礎知識:Java 棧與佇列詳解Java佇列
- 達夢資料庫基礎知識(一)資料庫物理儲存結構資料庫
- 資料結構與演算法——佇列(環形佇列)資料結構演算法佇列
- 重學資料結構(三、佇列)資料結構佇列