Skip to content

Commit f97a605

Browse files
committed
implementation of Normal and Circular Queue in JavaScript
1 parent 4085c34 commit f97a605

File tree

2 files changed

+83
-0
lines changed

2 files changed

+83
-0
lines changed

CircularQueue.js

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
class CircularQueue {
2+
constructor(capacity) {
3+
this.items = [];
4+
this.head = 0;
5+
this.tail = 0;
6+
this.count = 0;
7+
this.capacity = capacity;
8+
}
9+
10+
isFull() {
11+
return this.capacity === this.count;
12+
}
13+
14+
// adding the element to the queue
15+
enqueue(element) {
16+
if (this.isFull()) {
17+
return new Error("Queue is Full");
18+
}
19+
this.items[this.tail] = element;
20+
this.tail = (this.tail + 1) % this.capacity;
21+
this.count++;
22+
}
23+
24+
// removing the element from the queue
25+
dequeue() {
26+
if (this.count === 0) return null;
27+
28+
let item = this.items[this.head];
29+
this.head = (this.head + 1) % this.capacity;
30+
31+
this.count--;
32+
return item;
33+
}
34+
}
35+
36+
const queue = new CircularQueue(5);
37+
38+
queue.enqueue(10);
39+
queue.enqueue(20);
40+
queue.enqueue(30);
41+
queue.enqueue(40);
42+
queue.enqueue(50);
43+
queue.enqueue(60);
44+
console.log(queue);

Queue.js

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
class Queue {
2+
constructor() {
3+
this.items = [];
4+
this.head = 0;
5+
this.tail = 0;
6+
this.count = 0;
7+
}
8+
9+
// adding the element to the queue
10+
enqueue(element) {
11+
this.items[this.tail] = element;
12+
this.tail++;
13+
this.count++;
14+
}
15+
16+
// removing the element from the queue
17+
dequeue() {
18+
if (this.count === 0) return null;
19+
20+
let item = this.items[this.head];
21+
this.head++;
22+
if (this.head === this.tail) {
23+
this.head = 0;
24+
this.tail = 0;
25+
}
26+
this.count--;
27+
return item;
28+
}
29+
}
30+
31+
const queue = new Queue();
32+
33+
queue.enqueue(10);
34+
queue.enqueue(20);
35+
queue.enqueue(30);
36+
console.log(queue.dequeue());
37+
38+
// One main drawback in using this type of queue is the memory wastage.
39+
// Circular queue can overcome this disadvantage.

0 commit comments

Comments
 (0)