//队列 FIFO
function Queue() {
this.items = [];
}
//1.将元素加入到队列
Queue.prototype.enqueue = function(element) {
this.items.push(element);
}
//2.将元素从队列中移除
Queue.prototype.dequeue = function() {
return this.items.shift();
}
//3.查看队列中第一个元素
Queue.prototype.front = function() {
return this.items[0];
}
//4.查看队列是否为空
Queue.prototype.isEmpty = function() {
return this.items.length === 0;
}
//5.查看队列中元素的个数
Queue.prototype.size = function() {
return this.items.length;
}
//6.toString
Queue.prototype.toString = function() {
var result = '';
for(var i = 0; i < this.items.length; i++) {
result += this.items[i] + ' ';
}
return result;
}
var q = new Queue();
// q.enqueue(12);
// q.enqueue(13);
// q.dequeue();
// q.enqueue(15);
// console.log(q,q.toString(),q.front(),q.size(),q.isEmpty());
//应用--击鼓传花
function passGame(nameList, num) {
var queue = new Queue();
//将所有人加入队列中
for(var i = 0; i < nameList.length; i++) {
queue.enqueue(nameList[i]);
}
while(queue.size() > 1) {
//数到num的人被移除--数1到num-1的人依次放到队列的末尾[前提:对列中2个人以上]
for(var i = 0; i < num - 1; i++) {
queue.enqueue(queue.dequeue());
}
//数到num的人被移除
queue.dequeue();
}
console.log(queue.size(),queue.front());
return queue.front();
}
console.log(passGame(['小米','小张','小赵','小烈','小萌'],5));
网友评论