#java #list #nodes
Вопрос:
Я просматривал следующий код для вставки узла в начале кругового связанного списка, но я все еще очень смущен логикой того, как это делается. Я понимаю ту часть, где, если список пуст, вы можете просто приравнять новый узел к заголовку списка, но я действительно не понимаю, как все узлы «перемещаются» (я знаю, что это не совсем так, как работают связанные списки, но, так сказать), чтобы было место для нового узла и зачем вам нужен новый динамический узел. Кредит: https://www.geeksforgeeks.org/circular-singly-linked-list-insertion/
static Node addBegin(Node last, int data)
{
if (last == null)
return addToEmpty(last, data);
// Creating a node dynamically
Node temp = new Node();
// Assigning the data
temp.data = data;
// Adjusting the links
temp.next = last.next;
last.next = temp;
return last;
}
Ответ №1:
Узлы не «сдвинуты», представьте себе, что это цепочка (та, которая использовалась для блокировки ворот), вы идете, чтобы разобрать узел цепочки, вставить новый и связать новый узел (temp) со старым узлом), который был подключен к разобранному (temp.next=last.next), затем вы связываете старый узел цепочки («последний» в коде) с новым вставленным узлом (temp) (last.next=temp)
Комментарии:
1. Хорошее сравнение.