队列
记录下队列的学习
队列
在计算机科学中, 一个 队列(queue) 是一种特殊类型的抽象数据类型或集合。集合中的实体按顺序保存。
队列基本操作有两种:入队和出队。从队列的后端位置添加实体,称为入队;从队列的前端位置移除实体,称为出队。
队列中元素先进先出 FIFO (first in, first out)的示意
通俗点来说 就是排队服务 你先来先给你办理 后来的排队等候

实现一个队列
普通的队列常用的有以下几个方法:
1、enqueue  向队列尾部添加一个(或多个)新的项
2、dequeue  移除队列的第一(即排在队列最前面的)项,并返回被移除的元素
3、head  返回队列第一个元素,队列不做任何变动
4、tail  返回队列最后一个元素,队列不做任何变动
5、isEmpty  队列内无元素返回  true,否则返回  false
6、size  返回队列内元素个数
7、clear  清空队列
我们用 es6 Class 来实现一个队列
class Queue {
    constructor() {
        // 定义队列
        this._items = [];
    }
    // 入队
    enqueue(item) {
        this._items.push(item);
    }
    // 出队
    dequeue() {
        return this._items.shift();
    }
    // 获取队列 队首元素
    head() {
        return this._items[0];
    }
    // 获取队列 队尾元素
    tail() {
        return this._items[this._items.length - 1];
    }
    // 获取队列是否为空
    isEmpty() {
        return !this._items.length;
    }
    // 获取队列长度
    size() {
        return this._items.length;
    }
    // 清空队列
    clear() {
        this._items = [];
    }
}
双端队列
双端队列 顾名思义就是可以从队列得两队进行入队和出队
class Queue {
    // 尾部删除
    lastDequeue() {
        return this._items.pop()
    }
    // 头部删除
    firstDequeue() {
    }
}