Я новичок ie в JavaScript и пытаюсь выучить структуры данных и алгоритмы.
Я пытаюсь понять, как работает set
в зависимости от getIndex
.
Вот код:
class Node{
constructor(val){
this.val = val;
this.next = null
}
}
class SinglyLinkedList{
constructor(){
this.head = null;
this.tail = null;
this.length = 0;
}
push(val){
let newNode = new Node(val);
if(!this.head){
this.head = newNode
this.tail = this.head
}else{
this.tail.next = newNode;
this.tail = newNode
}
this.length++;
return this;
}
getIndex(index){
if(index > this.length || index < 0) return null;
let counter = 0, current = this.head;
while(counter !== index){
current = current.next;
counter++;
}
return current; // Here we return a value of the node we found
}
set(val, index){
let foundNode = this.getIndex(index);
if(foundNode){
foundNode.val = val;
// We can change the value of the node we founded in getIndex. Then the set works
// I don't understand why we can do this.
// Since what we do in getIndex is just returning a value of the node.
// How does changing that returned node can change the context of the list in term of the purpose of set
return true;
}
return false;
}
}
let list = new SinglyLinkedList();
list.push(88);
list.push(33);
list.push(11)
list.getIndex(1) // Output: Node: {val: 33, next: 11}. Why does changing this returned node can change the context of the whole list?
list.set(77,1) // Output: true. List (new) : 88 -> 77 -> 11
По сути, я имею в виду метод getIndex
, мы возвращаем узел current
. Затем мы изменим его в методе set
. Но getIndex
просто возвращает значение этого узла? Так почему же мы можем изменить весь список при изменении этого возвращаемого узла с getIndex
(в set
)?
Извините за мой глупый вопрос. Не стесняйтесь корректировать мои знания, особенно аспект class
. Пожалуйста помоги! Заранее спасибо