队列
记录下队列的学习
队列
在计算机科学中, 一个 队列(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() {
}
}