Как вы вставляете элементы в круговой односвязный список на Java?

#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. Хорошее сравнение.