-
Notifications
You must be signed in to change notification settings - Fork 11
/
priorityQueue.js
111 lines (93 loc) · 2.16 KB
/
priorityQueue.js
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
class PriorityQueue
{
constructor()
{
this.list = [];
}
// Adds element to the rear of the Queue
enqueue(element) // Time Complexity O(1)
{
if(this.isEmpty())
{
this.list.push(element);
}
else
{
let added = false;
for(let i = 0; i < this.list.length; i++)
{
if(element[1] < this.list[i][1]) // Checking priorities
{
this.list.splice(i, 0 , element);
added = true;
break;
}
}
if(!added)
{
this.list.push(element);
}
}
}
// Removes element from the front of the Queue
dequeue() // Time Complexity O(n)
{
return this.list.shift();
}
// Prints Queue
print()
{
console.log(this.list);
}
// Checks if Queue is empty
isEmpty()
{
return this.list.length === 0;
}
// Size of Queue
size()
{
console.log(`Size of Queue: ${this.list.length}`);
return this.list.length;
}
// Front value of Queue
front()
{
console.log(`Front value: ${this.list[0]} `);
return this.list[0];
}
// Rear value of Queue
rear()
{
console.log(`Rear value: ${this.list[this.list.length-1]} `);
return this.list[this.list.length-1];
}
// Clears Queue
clear()
{
console.log('items cleared..')
this.list.length = 0;
return this.list = [];
}
}
// FIFO Principle (FIFO : First in First Out)
// Space Complexity O(n)
// The lines below are not part of the data structure
/*
const priQueue = new PriorityQueue();
priQueue.enqueue(['etet',4]);
priQueue.enqueue(['rye',5]);
priQueue.enqueue(['wtw',2]);
priQueue.enqueue(['rtur', 3]);
priQueue.enqueue(['Xa',1]);
priQueue.print();
priQueue.size();
priQueue.dequeue();
priQueue.size();
priQueue.print();
priQueue.front();
priQueue.rear();
priQueue.clear();
priQueue.print();
priQueue.size();
*/