Вот и есть Пример, чтобы проиллюстрировать проблему: < /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
Почему, когда я устанавливаю 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