先进先出 前端删除,后端插入
队列的常见操作
enqueue(ele) : 向队列尾部添加一个或多个选项
dequeue():移除队列第一项,并返回被移除的元素
front():返回队列中第一个元素–最先被添加的,也是最被删除的。队列不做任何变动。
isEmpty():判断队列是否为空
size():返回队列包含元素的个数
toString():将队列中的内容转成字符串形式
队列的实现方式
- 基于数组
- 基于链表
//封装队列
function Queue(){
this.items = [];
Queue.prototype.enqueue = function(ele){
this.items.push(ele);
}
Queue.prototype.dequeue = function(){
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(){
var resultString = '';
for(var i = 0; i<this.items.length; i++){
resultString += this.items[i] + '';
}
return resultString;
}
}
//使用队列
var queue = new Queue();
//击鼓传花
function passGane(nameList,num){
var queue = new Queue;
for(var i = 0; i< nameList.length; i++){
queue.enqueue(nameList[i]);
}
while(queue.size()>1){
for(var i = 0; i<num-1; i++){
queue.enqueue(queue.enqueue);
}
queue.dequeue();
}
alert(queue.size());
var endName = queue.front();
alert("最终剩下的人是" + endName)
return nameList.indexOf(endName);
}
在这里插入代码片