From 3430a7074b85b12bb16d9906c04e857448e85f44 Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Wed, 28 Dec 2022 20:03:29 +0100 Subject: 2022-19 in js --- 2022/16-proboscidea-volcanium/priority_queue.js | 36 +++++++------------------ 1 file changed, 10 insertions(+), 26 deletions(-) (limited to '2022/16-proboscidea-volcanium/priority_queue.js') diff --git a/2022/16-proboscidea-volcanium/priority_queue.js b/2022/16-proboscidea-volcanium/priority_queue.js index c1a5b65..b9be08b 100644 --- a/2022/16-proboscidea-volcanium/priority_queue.js +++ b/2022/16-proboscidea-volcanium/priority_queue.js @@ -6,50 +6,34 @@ export class QElement { } export class PriorityQueue { - constructor() { + constructor(elt) { this.items = []; + if (elt !== undefined) { + this.enqueue(elt, 0); + } } enqueue(element, priority) { - var qElement = new QElement(element, priority); - var contain = false; + let qElement = new QElement(element, priority); - for (var i = 0; i < this.items.length; i++) { + for (let i = 0; i < this.items.length; ++i) { if (this.items[i].priority > qElement.priority) { this.items.splice(i, 0, qElement); - contain = true; - break; + return; } } - if (!contain) { - this.items.push(qElement); - } + this.items.push(qElement); } dequeue() { - if (this.isEmpty()){ - throw "Attempting to dequeue an empty queue"; - } - return this.items.shift(); + return this.items.shift(); // pop highest priority, use shift() for lower priority } front() { - if (this.isEmpty()){ - throw "Attempting to front an empty queue"; - } return this.items[0]; } rear() { - if (this.isEmpty()){ - throw "Attempting to rear an empty queue"; - } return this.items[this.items.length - 1]; } isEmpty() { - return this.items.length == 0; - } - printPQueue() { - var str = ""; - for (var i = 0; i < this.items.length; i++) - str += this.items[i].element + " "; - return str; + return this.items.length === 0; } } -- cgit v1.2.3