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 协议》,转载必须注明作者和本文链接
路漫漫其修远兮,吾将上下而求索。
MasterShu
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!