Я пытаюсь реализовать односвязный список в JavaScript, и мне трудно визуализировать концепцию передачи моей ссылки (и что указывает, куда). Мой код приведен ниже, и я подкрепил его несколькими вопросами или моим пониманием. Не могли бы вы, пожалуйста, go написать его и дать мне знать, если я думаю в правильном направлении.
class Node{
constructor(val){
this.val = val;
this.next = null;
}
}
class LinkedLists {
constructor(){
this.head = null;
this.length = 0;
this.tail = null;
}
// methods
addNodeStart(val){
let node = new Node(val);
if (this.length === 0){
this.length++;
this.head = node;
this.tail = node;
} else {
node.next = this.head;
this.head = node;
this.length++;
}
return this;
}
addNodeEnd(val){
let node = new Node(val);
if (this.length === 0){
this.length++;
this.head = node;
this.tail = node;
} else {
this.length++;
this.tail.next = node;
this.tail = node;
}
}
}
Мое понимание :
- При добавлении узла в начало (addNodeStart) сначала мы создаем новый узел с заданным значением val и помещаем инструкцию if, чтобы проверить, равна ли длина 0, а затем устанавливаем хвост и голову как на новый узел.
- Иначе Если длина> 1, то сначала укажите
node.next
на this.head
(this.head указывает на узел, который был установлен в качестве заголовка). Так this.head
это просто контейнер, содержащий ссылку на узел ?? или this.head фактический узел? Затем снова установите this.head для узла. Является ли this.head просто именем переменной, например, пусть x = 5; здесь x ссылается на ячейку памяти 5.
Итак, я думаю, что this.head - это просто контейнер (переменная), которая содержит значение узла? или я что-то здесь упускаю?