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数据结构与算法之队列(基于数组)
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...