function Queue() {
this.items = []
// 向队列尾部添加元素
Queue.prototype.enQueue = ele => {
this.items.push(ele)
}
//移除并返回队列第一个元素
Queue.prototype.deQueue = () => {
return this.items.shift()
}
//返回队列中第一个元素,不做任何修改
Queue.prototype.front = () => {
return this.items[0]
}
//返回队列最后一个元素,不做任何修改
Queue.prototype.end = () => {
return this.items[this.items.length - 1]
}
//队列是否为空
Queue.prototype.isEmpty = () => {
return this.items.length == 0
}
// 队列包含的元素个数
Queue.prototype.size = () => {
return this.items.length
}
// toString
Queue.prototype.toString = () => {
var resultStr = ''
for (var a = 0; a < this.items.length; a++) {
resultStr += this.items[a] + ' '
}
return resultStr
}
}
//击鼓传花修改版,N个参与者围成一圈进行有些弱智的数数 ,等于传入数的那个人淘汰
//游戏继续 , 给出最后的胜利者以及它在参与时的位置
function ccc(nameList, delNumber) {
var queue = new Queue()
//将参与者添加到队列中
for (var a = 0; a < nameList.length; a++) {
queue.enQueue(nameList[a])
}
//队列剩余一个参与者时停止
while (queue.size() > 1) {
//数数
for (var b = 0; b < delNumber - 1; b++) {
//把数到不等于淘汰number的人放到队列的后面
queue.enQueue(queue.deQueue())
}
//把等于淘汰number的人移出队列
queue.deQueue()
}
//打印队列中剩下的参与者
console.log('获胜者是:'+queue.front());
//打印参与者在游戏中原来的位置
console.log('参与时的位置:' + Number(nameList.indexOf(queue.front())+1));
}
var name = ['小明','小花','小磊','小红','小刚','小李','小青']
ccc(name,108)
获胜者是:小青
参与时的位置:7
JS数据结构与算法之队列(基于数组)
最新推荐文章于 2024-10-07 12:59:05 发布