2.1 KiB
2.1 KiB
title, shortTitle, type, tags, expertise, author, cover, excerpt, firstSeen
| title | shortTitle | type | tags | expertise | author | cover | excerpt | firstSeen |
|---|---|---|---|---|---|---|---|---|
| JavaScript Data Structures - Queue | Queue | story | javascript,object,class,array | intermediate | chalarangelo | blog_images/purple-flower-macro-2.jpg | A queue is a linear data structure which follows a first in, first out (FIFO) order of operations. | 2021-07-29T05:00:00-04:00 |
Definition
A queue is a linear data structure that behaves like a real-world queue. It follows a first in, first out (FIFO) order of operations, similar to its real-world counterpart. This means that new items are added to the end of the queue, whereas items are removed from the start of the queue.
The main operations of a queue data structure are:
enqueue: Adds an element to the end of the queuedequeue: Removes an element from the start of the queuepeek: Retrieves the element at the start of the queue, without removing itisEmpty: Checks if the queue is empty
Implementation
class Queue {
constructor() {
this.items = [];
}
enqueue(item) {
this.items.push(item);
}
dequeue(item) {
return this.items.shift();
}
peek(item) {
return this.items[0];
}
isEmpty() {
return this.items.length === 0;
}
}
- Create a
classwith aconstructorthat initializes an empty array,items, for each instance. - Define an
enqueue()method, which usesArray.prototype.push()to add an element to the end of theitemsarray. - Define a
dequeue()method, which usesArray.prototype.shift()to remove an element from the start of theitemsarray. - Define a
peek()method, which retrieves the value of the first element in theitemsarray, without removing it. - Define an
isEmpty()method, which usesArray.prototype.lengthto determine if theitemsarray is empty.
const queue = new Queue();
queue.isEmpty(); // true
queue.enqueue('A');
queue.enqueue('B');
queue.enqueue('C');
queue.enqueue('D');
queue.enqueue('E');
queue.isEmpty(); // false
queue.peek(); // 'A'
queue.dequeue(); // 'A'
queue.dequeue(); // 'B'
queue.dequeue(); // 'C'
