Skip to content

Commit 2708c8c

Browse files
committed
add queue using stack in js
1 parent c72353c commit 2708c8c

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

Stacks/queue using stack.js

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
// Queue using stack
2+
class Queue {
3+
constructor() {
4+
this.enqueueStack = []; // Stack for enqueue operations
5+
this.dequeueStack = []; // Stack for dequeue operations
6+
}
7+
8+
enqueue(value) {
9+
// Enqueue: Add an element to the back of the queue.
10+
this.enqueueStack.push(value);
11+
}
12+
13+
dequeue() {
14+
// Dequeue: Remove and return the front element of the queue.
15+
// If the dequeue stack is empty, transfer elements from the enqueue stack
16+
if (this.dequeueStack.length === 0) {
17+
while (this.enqueueStack.length > 0) {
18+
// Pop an element from the enqueue stack and push it onto the dequeue stack
19+
const element = this.enqueueStack.pop();
20+
this.dequeueStack.push(element);
21+
}
22+
}
23+
24+
// If the dequeue stack is still empty, the queue is empty
25+
if (this.dequeueStack.length === 0) {
26+
throw new Error("Queue is empty");
27+
}
28+
29+
// Pop and return the front element from the dequeue stack
30+
return this.dequeueStack.pop();
31+
}
32+
}
33+
34+
// Example usage
35+
const queue = new Queue();
36+
queue.enqueue(1);
37+
queue.enqueue(2);
38+
queue.enqueue(3);
39+
console.log(queue.dequeue()); // Output: 1
40+
console.log(queue.dequeue()); // Output: 2
41+
queue.enqueue(4);
42+
queue.enqueue(5);
43+
console.log(queue.dequeue()); // Output: 3
44+
console.log(queue.dequeue()); // Output: 4
45+
console.log(queue.dequeue()); // Output: 5

0 commit comments

Comments
 (0)