队列结构及封装

队列(Queue)

        受限之处在于他只允许在表的前端(front)进行删除操作

        而在表的后端(rear)进行插入操作

生活中类似的队列

        比电影院、商场、厕所排队

        优先排队的人,优先处理

线程队列

        在开发中,为了让任务可以并行处理,通常会开启多个线程,但是,我们不能让大量的线程同时运行处理任务,(占用过多的资源),这个时候,如果有需要开启线程处理任务的情况,我们就会使用线程队列。线程队列会依照次序开启动线程,并且处理对应的任务

队列类的封装(基于数组)

        enqueue(element):向队列尾部添加一个(或多个)新的项。

        dequeue():移除队列的第一(即排在队列最前面的)项,并返回被移除的元素

        front():返回队列中第一个元素----最先被添加,也就是最先被一处的元素。队列不做任何变动(不移除元素,只返回元素信息-----与Stack类的方法非常类似)

        isEmpty():如果队列不包含任何元素,返回true,否则返回false

        size():返回队列包含的元素个数,与数组的length属性类似

        toString():将队列中的内容,装成字符串形式

// 封装队列类
class Queue {
  constructor() {
    // 初始化队列
    this.items = [];
  }

  // 1.将元素添加到队列中
  enqueue(element) {
    this.items.push(element);
  }

  // 2.从队列中删除元素
  dequeue() {
    return this.items.shift();
  }

  // 3.返回队列中的第一个元素
  front() {
    return this.items[0];
  }

  // 4.返回队列中元素的个数
  size() {
    return this.items.length;
  }

  // 5.判断队列是否为空
  isEmpty() {
    return this.items.length === 0;
  }

  // 6.toString方法
  toString() {
    let str = ''
    this.items.forEach(item => {
      str += item
    })
    return str
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值