1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| class QueueElement { constructor(element, priority) { this.element = element; this.priority = priority; } }
export class PriorityQueue extends Queue { constructor() { super(); }
enqueue(element, priority) { const queueElement = new QueueElement(element, priority);
if (this.isEmpty()) { this.items.push(queueElement); } else { let added = false;
for (let i = 0; i < this.items.length; i++) { if (queueElement.priority < this.items[i].priority) { this.items.splice(i, 0, queueElement); added = true; break; } }
if (!added) { this.items.push(queueElement); } } }
dequeue() { return super.dequeue(); }
front() { return super.front(); }
isEmpty() { return super.isEmpty(); }
size() { return super.size(); }
toString() { let result = ""; for (let item of this.items) { result += item.element + "-" + item.priority + " "; } return result; } }
|