内容大纲

队列

huan_kong

133字小于1分钟

2023-11-22

介绍

image-20231122135428303

前面是前端, 后面是后端

插入从后端插入, 取出从前端取出

也就是先进先出 ( FIFO:First In First Out )

优点: 提供先进先出的存储方式, 添加速度快, 允许重复

缺点: 只能在一头添加, 另一头获取, 存取其他项很慢

TS实现

  class Queue {
    #value: any[] = []

    enqueue(element: any) {
      return this.#value.push(element)
    }

    dequeue() {
      return this.#value.shift()
    }

    front() {
      return this.#value[0]
    }

    isEmpty() {
      return this.#value.length === 0
    }

    size() {
      return this.#value.length
    }

    toString() {
      return this.#value.toString()
    }
  }

小案例

image-20231122142138222

  function passGame(nameList: string[], num = 5) {
    const queue = new Queue()

    for (let name of nameList) {
      queue.enqueue(name)
    }

    while (queue.size() > 1) {
      for (let i = 0; i < num - 1; i++) {
        queue.enqueue(queue.dequeue())
      }

      queue.dequeue()
    }

    return queue
  }