почему метод pu sh работает в этой очереди, используя javascrip - PullRequest
0 голосов
/ 02 февраля 2020

Может кто-нибудь объяснить, как работает метод pu sh (val)? Я не могу понять логи c. Я не знаю, как это работает, почему это работает.

class Node {
    constructor(val) {
        this.val = val;
        this.next = null;
    }
};

class Queue {
    constructor() {
        this.first = null;
        this.last = null;
        this.length = 0;
    }

    push(val) {
        const temp = new Node(val)
        if(this.last === null) {
            this.first = temp
            this.last = temp
        } else {
            this.last.next = temp
            this.last = temp
        }
        this.length++;
        console.log(this)
    }
}

const queue = new Queue();
queue.push('Joy');
queue.push('Matt');
queue.push('Pavel');

1 Ответ

0 голосов
/ 02 февраля 2020

Это связанный список:

enter image description here

Итак, изначально, первый (голова на изображении) и последние элементы равны нулю:

this.first = null;
this.last = null;
this.length = 0;

В этот момент оба указывают на ноль.

Если вы добавляете новый элемент, и если last равен нулю, он знает, что это начальное состояние, что означает, что нет элемент в очереди, поэтому добавьте самый первый элемент в очередь и сделайте так, чтобы first и last указывали на один и тот же объект, потому что на данный момент есть только один элемент:

if(this.last === null) {
    this.first = temp
    this.last = temp
}

Если вы добавите еще один элемент элемент, сначала проверьте, есть ли какой-либо элемент в очереди (проверяя действительность last) и, если он есть, добавьте его в конец очереди с помощью:

else {
    this.last.next = temp
    this.last = temp
}

Чтобы объяснить это далее, он делает следующее:

  • this.last указывает на последний элемент очереди (по состоянию на момент до добавления нового элемента), поэтому обновляет его свойство next, чтобы оно указывало на новый элемент.
  • Затем обновите this.last, чтобы он указывал на добавляемый последний последний элемент.
  • Als о, обратите внимание, что в этот момент его указатель next указывает на null.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...