diff --git a/guide/english/certifications/coding-interview-prep/data-structures/create-a-circular-queue/index.md b/guide/english/certifications/coding-interview-prep/data-structures/create-a-circular-queue/index.md index 8c04d4869b..2be1733d60 100644 --- a/guide/english/certifications/coding-interview-prep/data-structures/create-a-circular-queue/index.md +++ b/guide/english/certifications/coding-interview-prep/data-structures/create-a-circular-queue/index.md @@ -3,8 +3,79 @@ title: Create a Circular Queue --- ## Create a Circular Queue -This is a stub. Help our community expand it. +### Method: +- In this challenge we create a Circular Queue data structure. +- First, we need to create an array of `size` with all elements set to `null`. +- 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: + ```output + [null, null, null, null, null] + ^Read @ 0 + ^Write @ 0 + ``` + - Then we enqueue `a`, `b`, and `c`: + ```output + [a, b, c, null, null] + ^Read @ 0 + ^Write @ 3 + ``` + - Now we dequeue all the enqueued items: + ```output + [null, null, null, null, null] + ^Read @ 3 + ^Write @ 3 + ``` + - Finally, we enqueue `d`, `e` and `f`: + ```output + [f, null, null, d, e] + ^Read @ 3 + ^Write @ 1 + ``` +### Solution: +```js +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; + } + } + ``` +### References: -This quick style guide will help ensure your pull request gets accepted. - - +- [Wikipedia](https://en.wikipedia.org/wiki/Circular_buffer)