Основной связанный список просто начинается с узла Head, и каждый узел в списке указывает на следующий узел в списке. Последнему узлу будет присвоено значение next
, равное null
, до тех пор, пока новый узел не будет добавлен, и в этот момент новый узел становится последним узлом.
Таким образом, здесь выполняется логика:
/* 6. Else traverse till the last node */
Node last = head;
while (last.next != null)
last = last.next;
/* 7. Change the next of last node */
last.next = new_node;
Он начинается с головы и смотрит на его next
. Если это не null
, это означает, что это все еще не фактический последний узел списка, поэтому он устанавливает переменную last
на следующий. Пока, наконец, он не найдет тот, для которого next
установлен в null
. Переменная last
действительно является последней действительной, когда цикл while завершается.
Затем она просто устанавливает next
узла last
на новый узел. Новый узел уже имеет next
, установленный на null
, поэтому в следующий раз, когда будет выполнен обход, это будет узел last
.