Normal FIFO and Priority Queues
JS
S
JavaScriptSimple 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