Kontynuujemy omawianie kodu, który wzięliśmy na warsztat w tej serii. Do dzieła.
Nasz przedmiot badań:
class SinglyLinkedList{
constructor(){
this.head = null;
this.tail = null;
this.length = 0;
}
//(...)
shift(){
if(!this.head) return undefined;
var currentHead = this.head;
this.head = currentHead.next;
this.length--;
if(this.length === 0){
this.tail = null;
}
return currentHead;
}
}
Logika:
- Jeśli nie ma head zwróć undefined (i przypisz to do jakiejś zmiennej, śmiało…)
- var currentHead to head
- Teraz głowa będzie pokazywać na element 1 dalej a długość będzie krótsza
- Jeśli długość to teraz 0 to nullujemy tail
- Zwracamy currentHead… lepsze to niż undefined…
Ok, moje uwagi:
- Nigdy nie przypisujemy undefined to zmiennych a return undefined może temu służyć
- Autor używa klas ES6+ oraz var…
- Lepsze niż reszta kodu, ale, ojej, trzymajcie się fotela bo nadciąga unshift. I sami zawsze wszystko sprawdzajcie, jeżeli płatne kursy o algorytmach zawierają pętle nieskończone to wyobraźcie sobie co w darmowych tutorialach wam do głowy wkładają…