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

Опубликовано: 11 Сентября, 2022

Мы представили связанные списки в предыдущем посте. Мы также создали простой связанный список с 3 узлами и обсудили обход связанного списка.
Все программы, обсуждаемые в этом посте, учитывают следующие представления связанного списка.

В этом посте обсуждаются методы вставки нового узла в связанный список. Узел можно добавить тремя способами
1) В начале связанного списка
2) После данного узла.
3) В конце связанного списка.

Добавьте узел спереди: (процесс из 4 шагов)
Новый узел всегда добавляется перед заголовком данного связанного списка. И вновь добавленный узел становится новым главой связанного списка. Например, если данный связанный список имеет вид 10->15->20->25 и мы добавляем элемент 5 впереди, тогда связанный список становится 5->10->15->20->25. Назовем функцию, которая добавляет в начало списка, push(). Функция push() должна получить указатель на указатель заголовка, потому что push должен изменить указатель заголовка, чтобы он указывал на новый узел (см. это)

Ниже приведены 4 шага, чтобы добавить узел впереди.

Временная сложность push() составляет O(1), так как она выполняет постоянный объем работы.
Добавить узел после заданного узла: (процесс из 5 шагов)
Нам дается указатель на узел, и новый узел вставляется после данного узла.


Java




/* This function is in LinkedList class. 
   Inserts a new node after the given 
   prev_node. This method is defined 
   inside LinkedList class shown above */
public void insertAfter(Node prev_node, 
                        int new_data) 
    // 1. Check if the given Node is null 
    if (prev_node == null
    
        System.out.println(
               "The given previous node cannot be null"); 
        return
    
  
    /* 2. Allocate the Node & 
       3. Put in the data*/
    Node new_node = new Node(new_data); 
  
    // 4. Make next of new Node as next
    // of prev_node 
    new_node.next = prev_node.next; 
  
    // 5. make next of prev_node as new_node 
    prev_node.next = new_node; 
}

Временная сложность функции insertAfter() составляет O(1), так как она выполняет постоянный объем работы.

Добавьте узел в конце: (процесс из 6 шагов)
Новый узел всегда добавляется после последнего узла данного связанного списка. Например, если заданный связанный список 5->10->15->20->25 и мы добавим элемент 30 в конце, тогда связанный список станет 5->10->15->20->25- >30.
Поскольку связанный список обычно представлен его заголовком, мы должны пройти по списку до конца, а затем изменить предпоследний узел на новый узел.

Ниже приведены 6 шагов для добавления узла в конце.

Временная сложность добавления равна O(n), где n — количество узлов в связанном списке. Поскольку существует цикл от начала до конца, функция работает O (n).
Этот метод также можно оптимизировать для работы в O(1), сохраняя дополнительный указатель на конец связанного списка/

Ниже приведена полная программа, которая использует все вышеперечисленные методы для создания связанного списка.

Выход:

 Created Linked list is:  1  7  8  6  4

Пожалуйста, обратитесь к полной статье в Linked List | Набор 2 (Вставка узла) для более подробной информации!