File tree 1 file changed +45
-0
lines changed
1 file changed +45
-0
lines changed Original file line number Diff line number Diff line change
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
You can’t perform that action at this time.
0 commit comments