function PriorityQueue() {
function QueueElement(element, priority) {
this.element = element;
this.priority = priority;
}
this.items = [];
PriorityQueue.prototype.enqueue = (element, priority) => {
const queueElement = new QueueElement(element, priority);
if (!this.items.length) {
this.items.push(queueElement);
} else {
let addFlag = false;
for (let i = 0; i < this.items.length; i++) {
if (queueElement.priority < this.items[i].priority) {
this.items.splice(i, 0, queueElement);
addFlag = true;
break;
}
}
if (!addFlag) {
this.items.push(queueElement);
}
}
};
PriorityQueue.prototype.dequeue = () => {
return this.items.shift();
};
PriorityQueue.prototype.front = () => {
return this.items[0];
};
PriorityQueue.prototype.isEmpty = () => {
return this.items.length == 0;
};
PriorityQueue.prototype.size = () => {
return this.items.length;
};
PriorityQueue.prototype.toString = () => {
let resultString = "";
for (let i = 0; i < this.items.length; i++) {
resultString +=
this.items[i].element + "-" + this.items[i].priority + " ";
}
return resultString;
};
}
const priorityQueue = new PriorityQueue();
priorityQueue.enqueue("张三", 12);
priorityQueue.enqueue("李四", 20);
priorityQueue.enqueue("王五", 120);
priorityQueue.enqueue("兆欧", 66);
priorityQueue.enqueue("八嘎", 2);
const data = priorityQueue.toString();
console.log("data", data);
console.log("priorityQueue", priorityQueue);