js 实现队列
function Queue() {
let items = [];
this.enqueue = function(item) {
items.push(item);
}
this.dequeue = function() {
return items.shift();
}
this.front = function() {
return items[0];
}
this.isEmpty = function() {
items.lenght = 0;
}
this.size = function() {
return items.length;
}
this.print = function() {
console.log(items.join())
}
}
function PriorityQueue() {
let items = [];
function QueueElement(item,priority) {
this.item = item;
this.priority = priority;
}
this.enqueue = function(item,priority) {
let queueElement = new QueueElement(item,priority);
if(this.isEmpty()) {
items.push(queueElement);
}else {
let added = false;
console.log(items.length)
for(let i = 0 ; i < items.length ; i++) {
if(queueElement.priority < items[i].priority) {
items.splice(i,0,queueElement);
added = true;
break;
}
}
if(!added) {
items.push(queueElement)
}
}
}
this.dequeue = function() {
return items.shift();
}
this.front = function() {
return items[0];
}
this.isEmpty = function() {
items.lenght = 0;
}
this.size = function() {
return items.length;
}
this.print = function() {
console.log(items)
}
}
let proiorityQueue = new PriorityQueue();
proiorityQueue.enqueue('jack',3);
proiorityQueue.enqueue('lucy',3);
proiorityQueue.enqueue('rick',1);
proiorityQueue.enqueue('marry',2);
proiorityQueue.print();
function hotPotato(nameList,num) {
let queue = new Queue();
for(let i = 0 ; i < nameList.length ; i ++) {
queue.enqueue(nameList[i]);
}
let eliminated = '';
while(queue.size() > 1) {
for(let i = 0 ; i < num ; i++) {
queue.enqueue(queue.dequeue());
}
eliminated = queue.dequeue();
console.log("淘汰者:" + eliminated);
}
return queue.dequeue();
}
let player = ['John','Jack','Camila','Ingrid','Carl'];
let winer = hotPotato(player,7);