1. 程式人生 > 實用技巧 >資料結構—佇列(Queue)

資料結構—佇列(Queue)

佇列

三五七言

不要讓資料結構成為天花板

相關程式碼

特點

先進先出的原則

佇列是一個線性結構,特點是在某一端新增資料,在另一端刪除資料

用途:

模擬流程或其他帶有抽象排隊屬性的事物或邏輯,例如時間迴圈佇列,釋出訂閱模式的回撥佇列等等。

基本方法

  • 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

雙向佇列

迴圈佇列

使用frontrear兩個指標分別代表隊列的頭和尾,實際對外表現的佇列是frontrear所指向的元素構成的。為了複用儲存空間,迴圈佇列在儲存結構的實現上是首位相連的。

  • 基本要素
    • front指標指向隊頭
    • rear指標指向隊尾
    • size佇列的長度
    • length儲存空間的大小
  • 基本方法
    • enqueue()元素入隊
    • dequeue()
      元素出隊
    • isEmpty()判斷隊空
    • isFull()判斷隊滿
    • getSize()獲取佇列長度
    • getLength()獲取儲存空間長度
    • clear()清空佇列

相關程式碼