Skip to main content

队列

记录下队列的学习

队列

在计算机科学中, 一个 队列(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() {

}

}

队列的应用