Compañeros quiero hacer un pequeño aporte sobre los métodos de eliminación como he visto en muchas de las soluciones que aplicamos dejamos un this.lenght - -; por fuera de las validaciones que realicemos con if, tal y como se muestra en el código:
Ejemplo en un Queue
dequeue() {
if(this.length === 0) {
console.error('El Queue está vacío, no hay elementos para eliminar');
} elseif(this.length === 1) {
const deleteNode = this.first;
this.first = deleteNode.next;
} else {
const deleteNode = this.first;
this.first = deleteNode.next;
this.last = null;
}
this.length--;
returnthis;
}
Sin embargo aquí estamos cometiendo un error dado que al momento de aplicar el método cuando la estructura no tenga ningún elemento ósea cuando su this.lenght sea igual a 0, el método va restar una unidad a ese this.lenght que ahora va ser -1, si esto sucede y en un futuro queremos agregar un nuevo elemento a esta estructura, cuando lo hagamos su this.lenght que debería ser 1 no lo va ser, va ser 0 y esto es un error, la forma en que deberíamos dejar el código en mi opinión es con un this.lenght - -; dentro de cada if excepto en el que tiene la validación de this.lenght ===0, de la siguiente manera:
dequeue() {
if(this.length === 0) {
console.error('El Queue está vacío, no hay elementos para eliminar');
} elseif(this.length === 1) {
const deleteNode = this.first;
this.first = deleteNode.next;
this.length--;
} else {
const deleteNode = this.first;
this.first = deleteNode.next;
this.last = null;
this.length--;
}
return this;
}
Espero les sea util compañeros, #NuncaParesDeAprender
Toda la razón Kike, muchas gracias!!!