Normal FIFO and Priority Queues

JS
S
JavaScript

Simple trivial implementations of Normal FIFO and P Queues.

1// Queue
2function createFifoQueue() {
3  const queue = [];
4
5  return {
6    addToQueue(item){
7      queue.unshift(item); // Inserts new elements at the start of an array.
8    },
9    removeFromQueue(){
10      return queue.pop();
11    },
12    peek(){
13      return queue[queue.length - 1]
14    },
15    get length(){
16      return queue.length;
17    },
18    isEmpty() {
19      return queue.length === 0;
20    }
21  }
22};
23
24const q = createFifoQueue();
25// q.addToQueue('sample item 1');
26// q.addToQueue('sample item 2');
27// console.log(q.peek());
28// q.removeFromQueue();
29// console.log(q.peek());
30
31
32
33/* Priority Queue */
34function createPriorityQueue() {
35  const lowQ = createFifoQueue();
36  const highQ = createFifoQueue();
37  return {
38    addToQueue(item, isHighPriority = false) {
39      isHighPriority
40        ? highQ.addToQueue(item)
41        : lowQ.addToQueue(item);
42    },
43    removeFromQueue() {
44      if(!highQ.isEmpty()){
45        return highQ.removeFromQueue();
46      }
47      return lowQ.removeFromQueue();
48    },
49    peek() {
50      if(!lowQ.isEmpty()){
51        return lowQ.removeFromQueue();
52      }
53      return highQ.removeFromQueue();
54    },
55    length() {
56      return lowQ.length + highQ.length;
57    },
58    isEmpty() {
59      return highQ.isEmpty() && lowQ.isEmpty();
60    }
61  }
62}
63
64const pQ = createPriorityQueue();
65pQ.addToQueue('Normal task');
66pQ.addToQueue('Normal task 1');
67pQ.addToQueue('Urgent task', true);
68
69pQ.removeFromQueue();
70console.log(pQ.peek());

Created on 5/29/2019