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