Tabla de contenidos:
Una cola o queue por su nombre en ingles es una estructura de datos que nos permite almacenar elementos donde insertamos y eliminamos datos de los extremos.
Esto se le conoce como FIFO
(First In First Out) o First In First Out
(primero en entrar, primero en salir). Esto es traducido a la vida real de la siguiente manera:
Imagina que estás en Spotify y quieres añadir una canción a una playlist. La canción que añadas a la playlist será la última en ser reproducida cuando reproduzcas la playlist y la primera que añades será la primera en ser escuchada.
La imágen es un poco más explicativa:
Las colas tienen 2 métodos principales:
enqueue
oencolar
: Inserta un elemento al final de la coladequeue
odesencolar
: Elimina el primer elemento de la cola
Sus métodos secundarios son:
peek
over
: Devuelve el primer elemento de la cola sin eliminarloisEmpty
oestaVacia
: Devuelvetrue
si la cola está vacíasize
: Devuelve el número de elementos en la colaclear
olimpiar
: Elimina todos los elementos de la colaremove
oeliminar
: Elimina un elemento específico de la colagetIndex
ogetIndice
: Devuelve el índice de un elemento específico de la colasort
oordenar
: Ordena los elementos de la cola
Para ver el código completo de los métodos, visita el siguiente enlace
La explicacion detallada de cada cosa aqui ⤵
Primero debemos de empezar a crear el constructor de la clase de la cola. Esto lo que nos va a permitir será crear un objeto con la clase llamada queue
y posteriormente llamar a cada método de la clase.
class Queue {
constructor() {
this.items = [];
}
Este metodo como ya vimos, nos permite insertar un elemento al final de la cola.
enqueue(element) {
this.items.push(element);
}
Este metodo nos permitira eliminar el primer elemento de la cola.
dequeue();
{
return this.items.shift();
}
Devuelve el primer valor de la cola sin eliminarlo. He utilizado la sixtaxis del operador ternario Si tienes dudas consulta la documentación aquí
peek() {
return !this.isEmpty() ? this.items[0] : undefined;
}
Muestra un 0 si es que la cola se encuentra vacia
isEmpty() {
return this.items.length === 0;
}
Muestra el tamaño de la cola con el método length
size(){
return this.items.length;
}
Vacia todos los elementos de la cola, dejando la cola vacía.
clear() {
this.items = [];
}
Remueve un elemento en especifico de la lista con indexOf
remove(element) {
let index = this.items.indexOf(element);
if (index !== -1) {
this.items.splice(index,1);
}
}
Regresa el indice de un elemento con indexOf
getIndex(element) {
return this.items.indexOf(element);
}
Nos permite ordenar los elementos de la cola de menor a mayor por defecto. Con sort
sort() {
this.items.sort()
}
Si queremos invertir la cola seria de la siguiente manera con reverse
sortInverted() {
this.items.sort().reverse()
}
Recuerda que puedes checar el codigo completo aqui