//队列 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));
js 实现队列结构
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 前面我们学习了栈的实现,队列和栈非常类似,但是使用了不同的原则,而非后进先出。 队列是遵循FIFO(First I...
- 代码运行环境:任何可以运行Javascript的环境即可。 第一章:队列 1. 什么是队列? 特性:先进去的元素,...