概述
javascript 基于数组方式实现队列及一系列队列的相关操作
//封装队列类 队列的特点 从后端插入元素 从前端删除(取)元素
function Queue() {
this.items = []
//将元素加入到队列中
Queue.prototype.enQueue = function (element) {
this.items.push(element)
}
//前端删除队列元素
Queue.prototype.delQueue = function () {
return this.items.shift()
}
//查看前端的元素
Queue.prototype.front = function () {
return this.items[0]
}
//查看队列是否为空
Queue.prototype.isEmpty = function () {
return this.items.length === 0
}
//查看队列中元素的个数
Queue.prototype.size = function () {
return this.items.length
}
//将队列中的元素转化为字符串
Queue.prototype.toString = function () {
let resultString = ''
for (let i = 0 ; i < this.items.length; i++) {
resultString += this.items[i] + ' '
}
return resultString
}
}
检验创建的队列是否有误
const queue = new Queue()
queue.enQueue('ssss')
queue.enQueue('few')
queue.enQueue('dfa')
queue.enQueue('455')
console.log(queue.delQueue());
console.log(queue.toString())
console.log(queue.front())
console.log(queue.isEmpty())
console.log(queue.size())
结果
ssss
few dfa 455
few
false
3
利用上面创建好的队列解决击鼓传花的游戏
规则如下:将参加玩游戏的人围成一个圈,从1开始数数,数到某一个规定的数字就淘汰,下一个人继续从1开始数,最后剩下的人会获得胜利,问这个人是谁?
//利用封装好的队列解决击鼓传花的游戏
function passGame(namesList,passNumber) {
const queue = new Queue()
for (let i = 0; i < namesList.length; i++) {
queue.enQueue(namesList[i]) //将玩游戏的人依次加入到队列中
}
while(queue.size() > 1) { //当队列中仅剩一人时停止游戏
for (let i = 1; i < passNumber; i++) {
queue.enQueue(queue.delQueue()) //将未喊道淘汰数字的人 依次从队列删除 并加入到队列的末尾
}
queue.delQueue() //将喊道淘汰数字的人剔除队列
}
let winner = queue.front()
return winner
}
let names = ['a','b','c','d','e','f']
console.log(passGame(names, 5));
结果
a
最后
以上就是火星上果汁为你收集整理的javascript 基于数组方式实现队列及一系列队列的相关操作的全部内容,希望文章能够帮你解决javascript 基于数组方式实现队列及一系列队列的相关操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复