• 欢迎光临~

js数据结构与算法-队列的实现

开发技术 开发技术 2022-08-17 次浏览

和栈的实现相似,但是这里使用对象的方式,对象的key是数字的实现,类似数组。

/**
   * 队列
   */
class Queue {
  #count = 0; //队列最大数量
  #lowestCount = 0; //目前第一个元素的下标
  #items = {}; //队列
  constructor() { }
  //增加元素
  enqueue(element) {
    this.#items[this.#count] = element;
    this.#count++;
  }
  //移除元素
  dequeue() {
    if (this.isEmpty()) {
      return undefined;
    }
    const result = this.#items[this.#lowestCount];
    delete this.#items[this.#lowestCount];
    this.#lowestCount++;
    return result;
  }
  //队列是否为空
  isEmpty() {
    // return this.#count - this.#lowestCount === 0;
    return this.size() === 0;
  }
  //查看队列头元素
  peek() {
    if (this.isEmpty()) {
      return undefined;
    }
    return this.#items[this.#lowestCount];
  }
  //队列中有几个元素
  size() {
    return this.#count - this.#lowestCount;
  }
  //清空队列
  clear() {
    this.#count = 0;
    this.#lowestCount = 0;
    this.#items = {};
  }
  //toString
  toString() {
    if (this.isEmpty()) {
      return '';
    }
    let objString = `${this.#items[this.#lowestCount]}`;
    for (let i = this.#lowestCount + 1; i < this.#count; i++) {
      objString = `${objString}, ${this.#items[i]}`;
    }
    return objString;
  }
}

const q1 = new Queue()
q1.enqueue(1)
q1.enqueue(2)
q1.enqueue(3)
q1.dequeue()
console.log(q1)

这里新增3个元素,删除一个元素。

返回q1的值:

js数据结构与算法-队列的实现

程序员灯塔
转载请注明原文链接:js数据结构与算法-队列的实现
喜欢 (0)