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ą…