Js 队列简单实现

本文介绍了如何在JavaScript中实现一个简单的队列数据结构。队列类Queue继承了Collection类,并提供了enqueue(入队)和dequeue(出队)方法,同时具备检查索引越界和自动扩容的功能。通过示例展示了创建和操作队列的过程。
摘要由CSDN通过智能技术生成

这里写自定义目录标题

Js 队列简单实现

队列简单实现,Queue有两个工具函数,用来判断越界,与增加容量。

class Collection {
  DEFAULT_CAPACITY = 10;
}

export class Queue extends Collection {
  constructor(capacity) {
    super();
    capacity ||= this.DEFAULT_CAPACITY;
    this._elements = new Array(capacity);
    this._capacity = capacity;
    this._size = 0;
  }

  isExcessRange(index) {
    return index < 0 || index >= this._size;
  }

  ensureCapacity(capacity) {
    if (this._capacity < capacity) {
      this._capacity = this._capacity + (this._capacity >> 1);
      const newElements = new Array(this._capacity);
      for (let i = 0; i < this._size; i++) {
        newElements[i] = this._elements[i];
      }
      this._elements = newElements;
    }
  }
  enqueue(element) {
    this.ensureCapacity(this._size + 1);
    this._elements[this._size] = element;
    this._size++;
  }

  dequeue() {
    const dequeueElement = this._elements[0];
    if (this._size > 0) {
      const newElements = new Array(this._capacity);
      for (let i = 0; i < this._size; i++) {
        newElements[i] = this._elements[i + 1];
      }
      this._elements = newElements;
      this._size--;
    }
    return dequeueElement;
  }
  size() {
    return this._size;
  }
}

const queue1 = new Queue(2);

console.log(queue1);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值