資料結構—佇列(Queue)
阿新 • • 發佈:2020-11-23
佇列
三五七言
不要讓資料結構成為天花板
相關程式碼
特點
先進先出的原則
佇列是一個線性結構,特點是在某一端新增資料,在另一端刪除資料
用途:
模擬流程或其他帶有抽象排隊屬性的事物或邏輯,例如時間迴圈佇列,釋出訂閱模式的回撥佇列等等。
基本方法
enqueue()
在隊尾插入一個元素dequeue()
從隊頭刪除一個元素getHeader()
獲取隊頭的元素getTail()
獲取隊尾的元素getLength()
獲取佇列的長度isEmpty()
判斷佇列是否為空佇列
/** * 佇列基本方法 enqueue()在隊尾插入一個元素 dequeue()從隊頭刪除一個元素 getHeader()獲取隊頭的元素 getTail()獲取隊尾的元素 getLength()獲取佇列的長度 isEmpty()判斷佇列是否為空佇列*/ class Queue { constructor() { this.queue = [] } // 入隊 enqueue(item) { this.queue.push(item) } //出隊 dequeue() { return this.queue.shift() } //獲取隊頭 getHeader() { return this.queue[0] } //獲取隊尾資料 getTail() { return this.queue[this.queue.length - 1] } getLength() {return this.queue.length } //判斷空 isEmpty() { return this.queue.length === 0 } } module.exports = Queue
雙向佇列
迴圈佇列
使用front
和rear
兩個指標分別代表隊列的頭和尾,實際對外表現的佇列是front
和rear
所指向的元素構成的。為了複用儲存空間,迴圈佇列
在儲存結構的實現上是首位相連的。
- 基本要素
front指標
指向隊頭rear指標
指向隊尾size
佇列的長度length
儲存空間的大小
- 基本方法
enqueue()
元素入隊dequeue()
isEmpty()
判斷隊空isFull()
判斷隊滿getSize()
獲取佇列長度getLength()
獲取儲存空間長度clear()
清空佇列