Почему настройка связанного списка Node Node Node на Null также не влияет на узел, на который он указывал?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Почему настройка связанного списка Node Node Node на Null также не влияет на узел, на который он указывал?

Сообщение Anonymous »

Я пытаюсь изменить однозначно связанный список в Java, но я сталкиваюсь с путаницей в отношении того, как ссылки работают во время процесса изменения. В частности, я не понимаю, почему установление следующего указателя узла на NULL не влияет на узел, на который он указывал (то есть узел после него). < /P>
Вот и есть Пример, чтобы проиллюстрировать проблему: < /p>
Пример:
Рассмотрим следующий первоначальный связанный список: < /p>

Код: Выделить всё

1 -> 2 -> 3 -> null
< /code>
В первой итерации цикла Node 1 Следующие указывают на узел 2. Я использую следующий код, чтобы отменить список: < /p>
class ListNode {
int val;
ListNode next;
ListNode(int val) { this.val = val; }
}

class Solution {
public ListNode reverseList(ListNode head) {
ListNode prev = null;
ListNode temp = head;

while (temp != null) {
ListNode front = temp.next;  // Save next node (which is node 2 initially)
temp.next = prev;            // Set node1.next to null (disconnect node1 from node2)
prev = temp;
temp = front;
}

return prev;
}
}
< /code>
Что я ожидаю, что произойдет:
Первоначально, узел 1 следующие указывает на узел 2.
в первой итерации, когда я устанавливаю node1.next = null < / Код>, я ожидаю, что сам узел 2 будет каким -то образом затронут - либо его следующий указатель должен стать нулевым, либо сам узел 2 должен стать нулевым.
Что на самом деле происходит:
после установки узла1.next = null < / Код>, список становится: < /p>
1 -> null
2 -> 3 -> null
< /code>
Узел 2 остается незатронутым, и его следующий указатель все еще указывает на узел 3. Сам узел 2 не является аннулированным. < /p>
Моя путаница:
Почему узел 2 не станет нулевым, когда я установил следующий указатель Узела 1 на NULL? Сам), но этого не происходит. < /p>
Пример с передним указателем:
Позвольте мне объяснить эту путаницу со связанным примером: < /p>
Когда я выполняю front = temp.next 
, это сохраняет ссылку на следующий узел (то есть в первой итерации, фронт будет указывать на узел 2, потому что температура - узел 1). Это действительно, а узел 2 теперь является передней ссылкой. (т.е. настройка node1.next = null ), только следующий указатель узла 1 обновлен. Он не влияет на узел 2, хотя в Front = temp.next step, Next Node 1 указывал на узел 2.
Почему, когда я устанавливаю node1.next = null , только следующий указатель узела 1 обновляется, но не узел 2 следующий (или сам узел 2)?
Чего я не понимаю:
Почему настройка node1.next = null < /code> также не влияет на узел, на который был указан node1.next (то есть узел 2)? temp.next , почему сам узел 2 не становится нулевым (или его следующим указателем модифицируется) при настройке node1.next = null ?

Подробнее здесь: https://stackoverflow.com/questions/794 ... ect-the-no
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»