應該說佇列是日常生活中接觸最多的。
你買東西結賬要排隊,等公交要排隊,取錢要排隊。這個對,就可以理解為佇列了。
佇列的操作只有兩個,入隊 和 出隊。
理解佇列
根據場景也可以看出佇列:
- 線性表
- 操作受限
- 先到先得
佇列不管是程式碼還是概念,都十分好理解,下面我們就貼出程式碼。
入隊
/**
* Add a new element to the end.
* @param item
*/
enqueue(item) {
this.data[this.head + this.count] = item
this.count++
}
出隊
/**
* The element in front of the queue will removed and returned.
* @returns {null|*}
*/
dequeue() {
if (this.count <= 0) return null
const element = this.data[this.head]
this.head++
this.count--
return element
}
詳細程式碼見底部連結
發現更多
佇列和棧一樣,也是可以使用陣列或者連結串列來實現。並且佇列也是分為多種不同的特性佇列。
迴圈佇列 可以理解為一個環形的佇列,不需要進行資料搬遷,而是不斷調整頭部和尾部就可以一直使用了。
阻塞佇列 這個接觸過 Redis 的應該很快就能理解。就是 出隊 和 入隊 時增加限制條件,以此來阻塞佇列。
併發佇列 這個可以結合著阻塞佇列來理解,為了在併發時保證執行緒安全。
本文程式碼連結 https://github.com/MasterShu/JavaScript-Da...
本作品採用《CC 協議》,轉載必須註明作者和本文連結