mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-18 17:49:40 +08:00
57 lines
1.3 KiB
JavaScript
57 lines
1.3 KiB
JavaScript
/* Queue
|
|
* A Queue is a data structure that allows you to add an element to the end of
|
|
* a list and remove the item at the front. A queue follows a "First In First Out"
|
|
* system, where the first item to enter the queue is the first to be removed. This
|
|
* implementation uses an array to store the queue.
|
|
*/
|
|
|
|
// Functions: enqueue, dequeue, peek, view, length, empty
|
|
class Queue {
|
|
// constructor
|
|
constructor () {
|
|
// This is the array representation of the queue
|
|
this.queue = []
|
|
}
|
|
|
|
// methods
|
|
// Add a value to the end of the queue
|
|
enqueue (item) {
|
|
this.queue.push(item)
|
|
}
|
|
|
|
// Removes the value at the front of the queue
|
|
dequeue () {
|
|
if (this.empty()) {
|
|
throw new Error('Queue is Empty')
|
|
}
|
|
|
|
return this.queue.shift() // remove the item at position 0 from the array and return it
|
|
}
|
|
|
|
// Return the length of the queue
|
|
length () {
|
|
return this.queue.length
|
|
}
|
|
|
|
// Return the item at the front of the queue
|
|
peek () {
|
|
if (this.empty()) {
|
|
throw new Error('Queue is Empty')
|
|
}
|
|
|
|
return this.queue[0]
|
|
}
|
|
|
|
// List all the items in the queue
|
|
view (output = value => console.log(value)) {
|
|
output(this.queue)
|
|
}
|
|
|
|
// Return Is queue empty ?
|
|
empty () {
|
|
return this.queue.length === 0
|
|
}
|
|
}
|
|
|
|
export { Queue }
|