* feat: added circular queue * fixed code block, adjusted pointer position relative to array entries * fix: code block
		
			
				
	
	
	
		
			1.8 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			1.8 KiB
		
	
	
	
	
	
	
	
title
| title | 
|---|
| Create a Circular Queue | 
Create a Circular Queue
Method:
- In this challenge we create a Circular Queue data structure.
- First, we need to create an array of sizewith all elements set tonull.
- Then we create an equeue method, which moves the write pointer but doesnt exceed the read pointer.
- The dequeue method on the other hand, moves the read pointer but doesnt exceed the write pointer.
- Example:
- First, we create an array of length 5:
 [null, null, null, null, null] ^Read @ 0 ^Write @ 0- Then we enqueue a,b, andc:
 [a, b, c, null, null] ^Read @ 0 ^Write @ 3- Now we dequeue all the enqueued items:
 [null, null, null, null, null] ^Read @ 3 ^Write @ 3- Finally, we enqueue d,eandf:
 [f, null, null, d, e] ^Read @ 3 ^Write @ 1
Solution:
class CircularQueue {
    constructor(size) {
 
      this.queue = [];
      this.read = 0;
      this.write = 0;
      this.max = size - 1;
 
      while (size > 0) {
         this.queue.push(null);
         size--;
      }
 
    }
 
    print() {
      return this.queue;
    }
 
 
    enqueue(item) {
     if (this.queue[this.write] === null){
       this.queue[this.write++] = item;
 
       if (this.write > this.max) this.write = 0;
       return item;
     }
     return null;
    }
 
    dequeue() {
      if (this.queue[this.read] != null){
        let item = this.queue[this.read];
        this.queue[this.read++] = null;
        if (this.read > this.max) this.read = 0;
        return item;
      }
      return null;
    }
 }