队列

原文链接:https://note.noxussj.top/?source=sifo

什么是队列?

队列是一种遵循先进先出原则的有序集合,添加新元素的一端称为队尾,另一端称为队首。


实现功能

在 JavaScript 中没有队列,但是可以通过 Array 实现队列的所有功能

  • enqueue () 入队
  • dequeue () 出队
  • top () 获取队首值
  • size () 获取队列的元素个数
  • clear () 清空队列

应用场景

  • JavaScript 异步任务中的任务队列
  • 计算最近请求次数

基础案例

通过数组实现

    const queue = []
    queue.push(1) // 入队
    queue.shift() // 出队
    const top = queue[0] // 获取队首值
    const size = queue.length // 获取队列的元素个数
    queue.length = 0 // 清空队列

通过类模拟实现

    class Queue {
        constructor() {
            this.data = {}
            this.count = 0
        }
    
        /**
         * 入队
         */
        enqueue(item) {
            this.data[this.count++] = item
    
            return item
        }
    
        /**
         * 出队
         */
        dequeue() {
            if (this.count > 0) {
                const item = this.data[0]
    
                delete this.data[0]
    
                this.count--
    
                return item
            } else {
                return -1
            }
        }
    
        /**
         * 获取队首值
         */
        top() {
            if (this.count > 0) {
                return this.data[0]
            } else {
                return -1
            }
        }
    
        /**
         * 获取队列的元素个数
         */
        size() {
            return this.count
        }
    
        /**
         * 清空队列
         */
        clear() {
            this.data = {}
            this.count = 0
    
            return {}
        }
    }
    
    const queue = new Queue()
    
    queue.enqueue('a')
    queue.enqueue('b')

原文链接:https://note.noxussj.top/?source=sifo


菜园前端
19 声望2 粉丝

« 上一篇
什么是栈?
下一篇 »
什么是链表?