内容大纲

约 140 字小于 1 分钟

2023-11-22

介绍

image-20231122135428303

前面是前端, 后面是后端

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

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

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

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

TS实现

class Queue {
  #value = []

  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
}