目录
1.前言
和栈一样,队列也是一种常见数据结构。队列遵循FIFO(First In First Out)原则,先入先出。就好像排队购票一样,后来的人排在队尾,先来的人从队首离开。
队列示意图(图片来自网络)
队列常见方法:
push(val)
:向队列尾部添加一个(或多个)新的项。
remove()
:移除队列的第一(即排在队列最前面的)项,并返回被移除的元素。
front()
:返回队列中第一个元素
isEmpty()
:判断队列是否为空
size()
:返回队列包含的元素个数
队列分为顺序队列和循环队列,下面我们将使用链表实现JavaScript的两种队列。
2.顺序队列
使用链表实现顺序队列其实和链式栈的实现差不多,只是规则不一样。
function Queue() {
//队头
this.head = null
//队尾
this.tail = null
//队的长度
this.length = 0
//节点
function Node(value) {
this.value = value
this.next = null
}
//入队
Queue.prototype.push = function (val) {
//创建新节点
const node = new Node(val)
//如果此时队列为空
if (this.length === 0) {
this.head = node
this.tail = node
} else if (this.length === 1) {
//如果此时队列长度为1
this.head.