* fix: restructure certifications guide articles * fix: added 3 dashes line before prob expl * fix: added 3 dashes line before hints * fix: added 3 dashes line before solutions
90 lines
2.2 KiB
Markdown
90 lines
2.2 KiB
Markdown
---
|
|
title: Create a Queue Class
|
|
---
|
|
# Create a Queue Class
|
|
|
|
|
|
---
|
|
## Problem Explanation
|
|
- A Queue is an abstract Data Structure.
|
|
- A Queue folow FIFO/LILO principle.
|
|
- In this challenge we nede to implement `enqueue()`, `dequeue()`, `front()`, `size()`, `isEmpty()` methods.
|
|
- `enqueue()` - This method adds the element to the queue.
|
|
- `dequeue()` - This method removes the first element from the queue.
|
|
- `front()` - This method returns the first element in the queue that'd be dequeue'd.
|
|
- `size()` - This method returns the size of the queue.
|
|
- `isEmpty()` - This method returns if the queue is empty.
|
|
-
|
|
| DS | Access | Search | Insert | Delete |
|
|
| ----- | ------ | ------ | ------ | ------ |
|
|
| Queue | n | n | 1 | 1 |
|
|
|
|
- 
|
|
|
|
|
|
---
|
|
## Solutions
|
|
|
|
<details><summary>Solution 1 (Click to Show/Hide)</summary>
|
|
|
|
**Note:** This solution is not exactly a queue, the shift() method used in the dequeue() method is of complexity `O(n)` and not `O(1)`. However, the advanced solution rectifies this and uses Object(HashTables) instead of Array to implement Queue.
|
|
|
|
```js
|
|
function Queue() {
|
|
var collection = [];
|
|
this.print = function() {
|
|
console.log(collection);
|
|
};
|
|
this.enqueue = function(val) {
|
|
collection.push(val);
|
|
};
|
|
this.dequeue = function() {
|
|
return collection.shift();
|
|
};
|
|
this.front = function() {
|
|
return collection[0];
|
|
};
|
|
this.size = function() {
|
|
return collection.length;
|
|
};
|
|
this.isEmpty = function() {
|
|
return collection.length === 0;
|
|
};
|
|
}
|
|
```
|
|
</details>
|
|
|
|
|
|
<details><summary>Solution 2 (Click to Show/Hide)</summary>
|
|
|
|
```js
|
|
class Queue {
|
|
constructor() {
|
|
this.collection = {};
|
|
this.start = 0;
|
|
this.end = 0;
|
|
}
|
|
print() {
|
|
console.log(this.collection);
|
|
}
|
|
enqueue(val) {
|
|
this.collection[this.end++] = val;
|
|
}
|
|
dequeue() {
|
|
return this.collection[this.start++];
|
|
}
|
|
front() {
|
|
return this.collection[this.start];
|
|
}
|
|
size() {
|
|
return this.end - this.start;
|
|
}
|
|
isEmpty() {
|
|
return this.size() === 0;
|
|
}
|
|
}
|
|
```
|
|
#### Relevant Links
|
|
- [Wikipedia](https://en.wikipedia.org/wiki/Queue_(abstract_data_type))
|
|
</details>
|