JavaScript 的数据结构和算法 - 队列篇 (附代码)
队列
应该说队列是日常生活中接触最多的。
你买东西结账要排队,等公交要排队,取钱要排队。这个对,就可以理解为队列了。
队列的操作只有两个,入队 和 出队。
理解队列
根据场景也可以看出队列:
- 线性表
- 操作受限
- 先到先得
队列不管是代码还是概念,都十分好理解,下面我们就贴出代码。
入队
/**
* 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 协议》,转载必须注明作者和本文链接