File tree 1 file changed +70
-0
lines changed
1 file changed +70
-0
lines changed Original file line number Diff line number Diff line change
1
+ // Implement A Stack Using Two Queues
2
+
3
+ class Stack {
4
+ constructor ( ) {
5
+ this . queue1 = new Queue ( ) ;
6
+ this . queue2 = new Queue ( ) ;
7
+ }
8
+ push ( val ) {
9
+ this . queue1 . enqueue ( val ) ;
10
+ return this ;
11
+ }
12
+ pop ( ) {
13
+ if ( ! this . queue1 . size ) return null ;
14
+
15
+ while ( this . queue1 . size > 1 ) {
16
+ const value = this . queue1 . dequeue ( ) ;
17
+ this . queue2 . enqueue ( value ) ;
18
+ }
19
+ let removed = this . queue1 . dequeue ( ) ;
20
+
21
+ // swap queue1 and queue2;
22
+ const temp = this . queue2 ;
23
+ this . queue2 = this . queue1 ;
24
+ this . queue1 = temp ;
25
+
26
+ return removed ;
27
+ }
28
+ }
29
+
30
+ // QUEUE AND NODE HAVE BEEN IMPLEMENTED FOR YOU
31
+
32
+ class Node {
33
+ constructor ( value ) {
34
+ this . value = value ;
35
+ this . next = null ;
36
+ }
37
+ }
38
+
39
+ class Queue {
40
+ constructor ( ) {
41
+ this . first = null ;
42
+ this . last = null ;
43
+ this . size = 0 ;
44
+ }
45
+ enqueue ( data ) {
46
+ var node = new Node ( data ) ;
47
+
48
+ if ( ! this . first ) {
49
+ this . first = node ;
50
+ this . last = node ;
51
+ } else {
52
+ this . last . next = node ;
53
+ this . last = node ;
54
+ }
55
+
56
+ return ++ this . size ;
57
+ }
58
+
59
+ dequeue ( ) {
60
+ if ( ! this . first ) return null ;
61
+
62
+ var temp = this . first ;
63
+ if ( this . first == this . last ) {
64
+ this . last = null ;
65
+ }
66
+ this . first = this . first . next ;
67
+ this . size -- ;
68
+ return temp . value ;
69
+ }
70
+ }
You can’t perform that action at this time.
0 commit comments