В коде ниже, гдеОбъем локальной переменной «узел» в методе вставки из LinkedList
Node node = new Node(data);
node.next = head;
head = node;
, сфера применения «локальной» переменной «узел» находится в пределах блока, определенного внутри метода вставки, правая ? Итак, у меня сложилось впечатление, что, когда мы выходим из метода «вставить», мы теряем доступ к переменной «узел», и это дает мне (неправильное) впечатление, что «голова» больше не указывает на правильную ячейку памяти.
Почему это не так?
Другими словами, «голова» относится к тому адресу памяти, который был выделен во время выполнения локального кода «node = new Node (data)» справа? Не было ли это распределение применено к памяти стека? Разве это не так, когда каждый раз, когда вызов функции завершен, освобождается память стека, назначенная этому вызову?
Вот весь код:
public class LinkedList {
public Node head;
public void insert (int data){
if (head == null){
head = new Node(data);
} else {
Node node = new Node(data);
node.next = head;
head = node;
}
}
}
class Node {
public int data;
Node next;
Node (int data){
this.data = data;
}
}
Вам нужно различать переменные, значения, ссылки и объекты. –
@SotiriosDelimanolis, возможно, если я новичок, как отличить те, я бы не задавал этот вопрос, верно? –
Это были ключевые слова, которые я ожидал от вас, но, здесь, позвольте мне написать ответ. –