2.队列
受限的线性表,先进先出
-
表的前端进行删除操作
-
表的后端进行插入操作
2.1队列的常见操作
-
enqueue(element):向队列尾部添加一个(或多个)新的项
-
dequeue():移除队列的第一(即排在队列最前面的)项,并返回被移除的元素
-
front():返回队列中第一个元素--最先被添加,也将是最先被移除的元素。队列中不做任何变动(不移除元素,只返回元素信息与stack类的peek方法类似)
-
isEmpty():如果队列中不包含任何元素,返回true,否则返回false
-
size():返回队列包含的元素个数,与数组的length属性类似
-
toString():将队列中的内容,转成字符串形式
2.2列队操作的实践
//封装队列类
function Queue () {
this.list = []
//向队列尾部添加一个或多个新项
Queue.prototype.enqueue = function (element) {
this.list.push(element)
}
//移除队首元素
Queue.prototype.dequeue = function () {
return this.list.shift()
}
Queue.prototype.front = function () {
return this.list[0]
}
Queue.prototype.isEmpty = function () {
if (this.list.length == 0)
return false
else return true
}
Queue.prototype.size = function () {
return this.list.length
}
Queue.prototype.toString = function () {
return this.list.toString()
}
}
2.3经典面试题
击鼓传花
function gu () {
for (var i = 0; i < list.length; i++)
queue.enqueue(list[i])
var count = 0
while (queue.size() > 1) {
count++
if (count != 5) {
a = queue.dequeue()
queue.enqueue(a)
}
else {
queue.dequeue()
count = 0
}
}
console.log(queue)
}