Рубрики

Связанный список | Набор 2 (вставка узла)

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

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

C ++

// Узел связанного списка

class Node 

    public:

    int data; 

    Node *next; 

}; 
// Этот код предоставлен rathbhupendra

С

// Узел связанного списка

struct Node

{

  int data;

  struct Node *next;

};

Джава

// Класс связанного списка

class LinkedList

{

    Node head;  // заголовок списка

  

    / * Класс узла * /

    class Node

    {

        int data;

        Node next;

           

        // Конструктор для создания нового узла

        Node(int d) {data = d; next = null; }

    }

}

питон

# Класс узла

class Node:

  

    # Функция для инициализации объекта узла

    def __init__(self, data):

        self.data = data  # Назначить данные

        self.next = None  # Инициализировать следующий как ноль

  
# Класс связанного списка

class LinkedList:

    

    # Функция для инициализации объекта Linked List

    def __init__(self): 

        self.head = None

C #

/ * Узел связанного списка * /

public class Node

{

    public int data;

    public Node next;

    public Node(int d) {data = d; next = null; }

}

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

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

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

C ++

/ * Дана ссылка (указатель на указатель)
в начале списка и int,
вставляет новый узел в начало списка. * /

void push(Node** head_ref, int new_data) 

    / * 1. выделить узел * /

    Node* new_node = new Node(); 

  

    / * 2. вставить данные * /

    new_node->data = new_data; 

  

    / * 3. Сделать следующий из нового узла в качестве головы * /

    new_node->next = (*head_ref); 

  

    / * 4. переместить голову, чтобы указать на новый узел * /

    (*head_ref) = new_node; 

  
// Этот код предоставлен rathbhupendra

С

/ * Дана ссылка (указатель на указатель) на заголовок списка

   и int, вставляет новый узел в начало списка. * /

void push(struct Node** head_ref, int new_data)

{

    / * 1. выделить узел * /

    struct Node* new_node = (struct Node*) malloc(sizeof(struct Node));

   

    / * 2. вставить данные * /

    new_node->data  = new_data;

   

    / * 3. Сделать следующий из нового узла в качестве головы * /

    new_node->next = (*head_ref);

   

    / * 4. переместить голову, чтобы указать на новый узел * /

    (*head_ref)    = new_node;

}

Джава

/ * Эта функция находится в классе LinkedList. Вставляет

   новый узел в начале списка. Этот метод

   определенный внутри класса LinkedList, показанного выше * /

public void push(int new_data)

{

    / * 1 & 2: выделить узел &

              Введите данные * /

    Node new_node = new Node(new_data);

  

    / * 3. Сделать следующий новый узел в качестве головы * /

    new_node.next = head;

  

    / * 4. Переместить голову, чтобы указать на новый узел * /

    head = new_node;

}

питон

# Эта функция находится в классе LinkedList
# Функция для вставки нового узла в начале

def push(self, new_data):

  

    # 1 & 2: выделить узел &

    # Вставьте данные

    new_node = Node(new_data)

          

    # 3. Сделать следующий из нового узла в качестве головы

    new_node.next = self.head

          

    # 4. Переместите голову, чтобы указать на новый узел

    self.head = new_node

C #

/ * Вставляет новый узел в начало списка. * /

public void push(int new_data)

{

    / * 1 & 2: выделить узел &

               Введите данные * /

    Node new_node = new Node(new_data);

  

    / * 3. Сделать следующий новый узел в качестве головы * /

    new_node.next = head;

  

    / * 4. Переместить голову, чтобы указать на новый узел * /

    head = new_node;

}


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

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

С

/ * Учитывая узел prev_node, вставить новый узел после заданного

   prev_node * /

void insertAfter(struct Node* prev_node, int new_data)

{

    / * 1. проверить, является ли данный prev_node NULL * / 

    if (prev_node == NULL) 

    

       printf("the given previous node cannot be NULL");       

       return;  

    }  

           

    / * 2. выделить новый узел * /

    struct Node* new_node =(struct Node*) malloc(sizeof(struct Node));

   

    / * 3. вставить данные * /

    new_node->data  = new_data;

   

    / * 4. Сделать следующий из нового узла следующим за предыдущим узлом * /

    new_node->next = prev_node->next; 

   

    / * 5. переместить следующий из prev_node как new_node * /

    prev_node->next = new_node;

}

Джава

/ * Эта функция находится в классе LinkedList.

   Вставляет новый узел после указанного prev_node. Этот метод

   определенный внутри класса LinkedList, показанного выше * /

public void insertAfter(Node prev_node, int new_data)

{

    / * 1. Проверьте, является ли данный узел пустым * /

    if (prev_node == null)

    {

        System.out.println("The given previous node cannot be null");

        return;

    }

  

    / * 2. Выделить узел &

       3. Введите данные * /

    Node new_node = new Node(new_data);

  

    / * 4. Сделать следующий из нового узла следующим за предыдущим * *

    new_node.next = prev_node.next;

  

    / * 5. сделать следующий из prev_node как new_node * /

    prev_node.next = new_node;

}

питон

# Эта функция находится в классе LinkedList.
# Вставляет новый узел после указанного prev_node. Этот метод
# определено внутри класса LinkedList, показанного выше * /

def insertAfter(self, prev_node, new_data):

  

    # 1. проверить, существует ли данный prev_node

    if prev_node is None:

        print "The given previous node must inLinkedList."

        return

  

    # 2. Создать новый узел &

    # 3. Вставьте данные

    new_node = Node(new_data)

  

    # 4. Сделать следующий из нового узла как следующий из prev_node

    new_node.next = prev_node.next

  

    # 5. сделать следующий из prev_node как new_node

    prev_node.next = new_node

C #

/ * Вставляет новый узел после указанного prev_node. * /

public void insertAfter(Node prev_node, 

                          int new_data)

{

    / * 1. Проверьте, является ли данный узел пустым * /

    if (prev_node == null)

    {

        Console.WriteLine("The given previous node" +

                                  " cannot be null");

        return;

    }

  

    / * 2 & 3: выделить узел &

            Введите данные * /

    Node new_node = new Node(new_data);

  

    / * 4. Сделать следующий из нового узла как

                 следующий из prev_node * /

    new_node.next = prev_node.next;

  

    / * 5. сделать следующий из prev_node

                     как новый_узел * /

    prev_node.next = new_node;

}


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

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

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

С

/ * Дана ссылка (указатель на указатель) на голову

   списка и целого, добавляет новый узел в конце * /

void append(struct Node** head_ref, int new_data)

{

    / * 1. выделить узел * /

    struct Node* new_node = (struct Node*) malloc(sizeof(struct Node));

  

    struct Node *last = *head_ref;  / * используется на шаге 5 * /

   

    / * 2. вставить данные * /

    new_node->data  = new_data;

  

    / * 3. Этот новый узел будет последним, поэтому сделайте следующий

          как NULL * /

    new_node->next = NULL;

  

    / * 4. Если Связанный список пуст, то сделайте новый узел заголовком * /

    if (*head_ref == NULL)

    {

       *head_ref = new_node;

       return;

    }  

       

    / * 5. Остальной ход до последнего узла * /

    while (last->next != NULL)

        last = last->next;

   

    / * 6. Изменить следующий из последнего узла * /

    last->next = new_node;

    return;    

}

Джава

/ * Добавляет новый узел в конце. Этот метод

   определенный внутри класса LinkedList, показанного выше * /

public void append(int new_data)

{

    / * 1. Выделить узел &

       2. Вставьте данные

       3. Установить следующий как ноль * /

    Node new_node = new Node(new_data);

  

    / * 4. Если Связанный список пуст, сделайте

           новый узел в качестве головы * /

    if (head == null)

    {

        head = new Node(new_data);

        return;

    }

  

    / * 4. Этот новый узел будет последним узлом, поэтому

         сделать следующее как ноль * /

    new_node.next = null;

  

    / * 5. Остальной ход до последнего узла * /

    Node last = head; 

    while (last.next != null)

        last = last.next;

  

    / * 6. Изменить следующий из последнего узла * /

    last.next = new_node;

    return;

}

питон

# Эта функция определена в классе связанных списков
# Добавляет новый узел в конце. Этот метод
# определено внутри класса LinkedList, показанного выше * /

def append(self, new_data):

 

   # 1. Создайте новый узел

   # 2. Вставьте данные

   # 3. Установить следующий как None

   new_node = Node(new_data)

 

   # 4. Если Связанный список пуст, сделайте

   # новый узел в качестве головы

   if self.head is None:

        self.head = new_node

        return

 

   # 5. Остальное пройти до последнего узла

   last = self.head

   while (last.next):

       last = last.next

 

   # 6. Изменить следующий из последнего узла

   last.next =  new_node

C #

/ * Добавляет новый узел в конце. Этот метод
определенный внутри класса LinkedList, показанного выше * /

public void append(int new_data)

{

    / * 1. Выделить узел &

    2. Вставьте данные

    3. Установить следующий как ноль * /

    Node new_node = new Node(new_data);

  

    / * 4. Если Связанный список пуст,

       затем сделайте новый узел главой * /

    if (head == null)

    {

        head = new Node(new_data);

        return;

    }

  

    / * 4. Этот новый узел будет

    последний узел, поэтому сделайте следующий из него как ноль * /

    new_node.next = null;

  

    / * 5. Остальной ход до последнего узла * /

    Node last = head; 

    while (last.next != null)

        last = last.next;

  

    / * 6. Изменить следующий из последнего узла * /

    last.next = new_node;

    return;

}


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

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

C ++

// Полная рабочая программа на C ++ для демонстрации
// все методы вставки в связанный список
#include <bits/stdc++.h>

using namespace std;

  
// Узел связанного списка

class Node 

    public:

    int data; 

    Node *next; 

}; 

  
/ * Дана ссылка (указатель на указатель)
в начало списка и int вставляет
новый узел в начале списка. * /

void push(Node** head_ref, int new_data) 

    / * 1. выделить узел * /

    Node* new_node = new Node();

  

    / * 2. вставить данные * /

    new_node->data = new_data; 

  

    / * 3. Сделать следующий из нового узла в качестве головы * /

    new_node->next = (*head_ref); 

  

    / * 4. переместить голову, чтобы указать на новый узел * /

    (*head_ref) = new_node; 

  
/ * Учитывая узел prev_node, вставить новый узел после заданного
prev_node * /

void insertAfter(Node* prev_node, int new_data) 

    / * 1. проверить, является ли данный prev_node NULL * /

    if (prev_node == NULL) 

    

        cout<<"the given previous node cannot be NULL"

        return

    

  

    / * 2. выделить новый узел * /

    Node* new_node = new Node();

  

    / * 3. вставить данные * /

    new_node->data = new_data; 

  

    / * 4. Сделать следующий из нового узла следующим за предыдущим узлом * /

    new_node->next = prev_node->next; 

  

    / * 5. переместить следующий из prev_node как new_node * /

    prev_node->next = new_node; 

  
/ * Дана ссылка (указатель на указатель) на голову
списка и целого, добавляет новый узел в конце * /

void append(Node** head_ref, int new_data) 

    / * 1. выделить узел * /

    Node* new_node = new Node();

  

    Node *last = *head_ref; / * используется на шаге 5 * /

  

    / * 2. вставить данные * /

    new_node->data = new_data; 

  

    / * 3. Этот новый узел будет

    последний узел, поэтому сделайте следующий из

    это как NULL * /

    new_node->next = NULL; 

  

    / * 4. Если Связанный список пуст,

    затем сделайте новый узел главой * /

    if (*head_ref == NULL) 

    

        *head_ref = new_node; 

        return

    

  

    / * 5. Остальной ход до последнего узла * /

    while (last->next != NULL) 

        last = last->next; 

  

    / * 6. Изменить следующий из последнего узла * /

    last->next = new_node; 

    return

  
// Эта функция печатает содержимое
// связанный список, начиная с заголовка

void printList(Node *node) 

    while (node != NULL) 

    

        cout<<" "<<node->data; 

        node = node->next; 

    

  
/ * Код водителя * /

int main() 

    / * Начнем с пустого списка * /

    Node* head = NULL; 

      

    // Вставляем 6. Таким образом, связанный список становится 6-> NULL

    append(&head, 6); 

      

    // Вставить 7 в начале.

    // Таким образом, связанный список становится 7-> 6-> NULL

    push(&head, 7); 

      

    // Вставить 1 в начале.

    // Таким образом, связанный список становится 1-> 7-> 6-> NULL

    push(&head, 1); 

      

    // Вставить 4 в конце. Так

    // связанный список становится 1-> 7-> 6-> 4-> NULL

    append(&head, 4); 

      

    // Вставить 8, после 7. Так связано

    // список становится 1-> 7-> 8-> 6-> 4-> NULL

    insertAfter(head->next, 8); 

      

    cout<<"Created Linked list is: "

    printList(head); 

      

    return 0; 

  

  
// Этот код предоставлен rathbhupendra

С

// Полная рабочая программа на C, демонстрирующая все методы вставки
// в связанном списке
#include <stdio.h>
#include <stdlib.h>

  
// Узел связанного списка

struct Node

{

  int data;

  struct Node *next;

};

  
/ * Дана ссылка (указатель на указатель) на заголовок списка и

   int, вставляет новый узел в начало списка. * /

void push(struct Node** head_ref, int new_data)

{

    / * 1. выделить узел * /

    struct Node* new_node = (struct Node*) malloc(sizeof(struct Node));

  

    / * 2. вставить данные * /

    new_node->data  = new_data;

  

    / * 3. Сделать следующий из нового узла в качестве головы * /

    new_node->next = (*head_ref);

  

    / * 4. переместить голову, чтобы указать на новый узел * /

    (*head_ref)    = new_node;

}

  
/ * Учитывая узел prev_node, вставить новый узел после заданного

   prev_node * /

void insertAfter(struct Node* prev_node, int new_data)

{

    / * 1. проверить, является ли данный prev_node NULL * /

    if (prev_node == NULL)

    {

      printf("the given previous node cannot be NULL");

      return;

    }

  

    / * 2. выделить новый узел * /

    struct Node* new_node =(struct Node*) malloc(sizeof(struct Node));

  

    / * 3. вставить данные * /

    new_node->data  = new_data;

  

    / * 4. Сделать следующий из нового узла следующим за предыдущим узлом * /

    new_node->next = prev_node->next;

  

    / * 5. переместить следующий из prev_node как new_node * /

    prev_node->next = new_node;

}

  
/ * Дана ссылка (указатель на указатель) на голову

   списка и целого, добавляет новый узел в конце * /

void append(struct Node** head_ref, int new_data)

{

    / * 1. выделить узел * /

    struct Node* new_node = (struct Node*) malloc(sizeof(struct Node));

  

    struct Node *last = *head_ref;  / * используется на шаге 5 * /

  

    / * 2. вставить данные * /

    new_node->data  = new_data;

  

    / * 3. Этот новый узел будет последним, так что сделайте следующий из

          это как NULL * /

    new_node->next = NULL;

  

    / * 4. Если Связанный список пуст, то сделайте новый узел заголовком * /

    if (*head_ref == NULL)

    {

       *head_ref = new_node;

       return;

    }

  

    / * 5. Остальной ход до последнего узла * /

    while (last->next != NULL)

        last = last->next;

  

    / * 6. Изменить следующий из последнего узла * /

    last->next = new_node;

    return;

}

  
// Эта функция печатает содержимое связанного списка, начиная с заголовка

void printList(struct Node *node)

{

  while (node != NULL)

  {

     printf(" %d ", node->data);

     node = node->next;

  }

}

  
/ * Программа драйвера для проверки вышеуказанных функций * /

int main()

{

  / * Начнем с пустого списка * /

  struct Node* head = NULL;

  

  // Вставляем 6. Таким образом, связанный список становится 6-> NULL

  append(&head, 6);

  

  // Вставить 7 в начале. Таким образом, связанный список становится 7-> 6-> NULL

  push(&head, 7);

  

  // Вставить 1 в начале. Таким образом, связанный список становится 1-> 7-> 6-> NULL

  push(&head, 1);

  

  // Вставить 4 в конце. Таким образом, связанный список становится 1-> 7-> 6-> 4-> NULL

  append(&head, 4);

  

  // Вставляем 8 после 7. Таким образом, связанный список становится 1-> 7-> 8-> 6-> 4-> NULL

  insertAfter(head->next, 8);

  

  printf("\n Created Linked list is: ");

  printList(head);

  

  return 0;

}

Джава

// Полная рабочая Java-программа для демонстрации всех методов вставки
// в связанном списке

class LinkedList

{

    Node head;  // заголовок списка

  

    / * Узел связанного списка * /

    class Node

    {

        int data;

        Node next;

        Node(int d) {data = d; next = null; }

    }

  

    / * Вставляет новый узел в начало списка. * /

    public void push(int new_data)

    {

        / * 1 & 2: выделить узел &

                  Введите данные * /

        Node new_node = new Node(new_data);

  

        / * 3. Сделать следующий новый узел в качестве головы * /

        new_node.next = head;

  

        / * 4. Переместить голову, чтобы указать на новый узел * /

        head = new_node;

    }

  

    / * Вставляет новый узел после указанного prev_node. * /

    public void insertAfter(Node prev_node, int new_data)

    {

        / * 1. Проверьте, является ли данный узел пустым * /

        if (prev_node == null)

        {

            System.out.println("The given previous node cannot be null");

            return;

        }

  

        / * 2 & 3: выделить узел &

                  Введите данные * /

        Node new_node = new Node(new_data);

  

        / * 4. Сделать следующий из нового узла следующим за предыдущим * *

        new_node.next = prev_node.next;

  

        / * 5. сделать следующий из prev_node как new_node * /

        prev_node.next = new_node;

    }

     

    / * Добавляет новый узел в конце. Этот метод

       определенный внутри класса LinkedList, показанного выше * /

    public void append(int new_data)

    {

        / * 1. Выделить узел &

           2. Вставьте данные

           3. Установить следующий как ноль * /

        Node new_node = new Node(new_data);

  

        / * 4. Если Связанный список пуст, сделайте

              новый узел в качестве головы * /

        if (head == null)

        {

            head = new Node(new_data);

            return;

        }

  

        / * 4. Этот новый узел будет последним узлом, поэтому

              сделать следующее как ноль * /

        new_node.next = null;

  

        / * 5. Остальной ход до последнего узла * /

        Node last = head; 

        while (last.next != null)

            last = last.next;

  

        / * 6. Изменить следующий из последнего узла * /

        last.next = new_node;

        return;

    }

  

    / * Эта функция печатает содержимое связанного списка, начиная с

        данный узел * /

    public void printList()

    {

        Node tnode = head;

        while (tnode != null)

        {

            System.out.print(tnode.data+" ");

            tnode = tnode.next;

        }

    }

  

    / * Программа драйвера для проверки вышеуказанных функций. В идеале эта функция

       должен быть в отдельном пользовательском классе. Он хранится здесь, чтобы сохранить

       компактный код * /

    public static void main(String[] args)

    {

        / * Начнем с пустого списка * /

        LinkedList llist = new LinkedList();

  

        // Вставляем 6. Таким образом, связанный список становится 6-> NUllist

        llist.append(6);

  

        // Вставить 7 в начале. Таким образом, связанный список становится

        // 7-> 6-> NUllist

        llist.push(7);

  

        // Вставить 1 в начале. Таким образом, связанный список становится

        // 1-> 7-> 6-> NUllist

        llist.push(1);

  

        // Вставить 4 в конце. Таким образом, связанный список становится

        // 1-> 7-> 6-> 4-> NUllist

        llist.append(4);

  

        // Вставляем 8, после 7. Таким образом, связанный список становится

        // 1-> 7-> 8-> 6-> 4-> NUllist

        llist.insertAfter(llist.head.next, 8);

  

        System.out.println("\nCreated Linked list is: ");

        llist.printList();

    }

}
// Этот код предоставлен Раджатом Мишрой

питон

# Полная рабочая программа Python, чтобы продемонстрировать все
# методы вставки связанного списка

  
# Класс узла

class Node:

  

    # Функция для инициализации объекта узла

    def __init__(self, data):

        self.data = data  # Назначить данные

        self.next = None  # Инициализировать следующий как ноль

  

  
# Класс связанного списка содержит объект Node

class LinkedList:

  

    # Функция для инициализации головы

    def __init__(self):

        self.head = None

  

  

    # Функция для вставки нового узла в начале

    def push(self, new_data):

  

        # 1 & 2: выделить узел &

        # Вставьте данные

        new_node = Node(new_data)

  

        # 3. Сделать следующий из нового узла в качестве головы

        new_node.next = self.head

  

        # 4. Переместите голову, чтобы указать на новый узел

        self.head = new_node

  

  

    # Эта функция находится в классе LinkedList. Вставляет

    # новый узел после заданного prev_node. Этот метод

    # определено внутри класса LinkedList, показанного выше * /

    def insertAfter(self, prev_node, new_data):

  

        # 1. проверить, существует ли данный prev_node

        if prev_node is None:

            print "The given previous node must inLinkedList."

            return

  

        # 2. создать новый узел &

        # Вставьте данные

        new_node = Node(new_data)

  

        # 4. Сделать следующий из нового узла как следующий из prev_node

        new_node.next = prev_node.next

  

        # 5. сделать следующий из prev_node как new_node

        prev_node.next = new_node

  

  

    # Эта функция определена в классе связанных списков

    # Добавляет новый узел в конце. Этот метод

    # определено внутри класса LinkedList, показанного выше * /

    def append(self, new_data):

  

        # 1. Создайте новый узел

        # 2. Вставьте данные

        # 3. Установить следующий как None

        new_node = Node(new_data)

  

        # 4. Если Связанный список пуст, сделайте

        # новый узел в качестве головы

        if self.head is None:

            self.head = new_node

            return

  

        # 5. Остальное пройти до последнего узла

        last = self.head

        while (last.next):

            last = last.next

  

        # 6. Изменить следующий из последнего узла

        last.next =  new_node

  

  

    # Утилита для печати связанного списка

    def printList(self):

        temp = self.head

        while (temp):

            print temp.data,

            temp = temp.next

  

  

  
# Выполнение кода начинается здесь

if __name__=='__main__':

  

    # Начнем с пустого списка

    llist = LinkedList()

  

    # Вставить 6. Таким образом, связанный список становится 6-> Нет

    llist.append(6)

  

    # Вставьте 7 в начале. Таким образом, связанный список становится 7-> 6-> Нет

    llist.push(7);

  

    # Вставьте 1 в начале. Таким образом, связанный список становится 1-> 7-> 6-> Нет

    llist.push(1);

  

    # Вставьте 4 в конце. Таким образом, связанный список становится 1-> 7-> 6-> 4-> Нет

    llist.append(4)

  

    # Вставьте 8 после 7. Таким образом, связанный список становится 1 -> 7-> 8-> 6-> 4-> Нет

    llist.insertAfter(llist.head.next, 8)

  

    print 'Created linked list is:',

    llist.printList()

  
# Этот код предоставлен Маникантаном Нарасимханом

C #

// Полная рабочая программа на C # для демонстрации
// все методы вставки в связанный список

using System;

      

class GFG

{

    public Node head; // заголовок списка

  

    / * Узел связанного списка * /

    public class Node

    {

        public int data;

        public Node next;

        public Node(int d) {data = d; next = null;}

    }

  

    / * Вставляет новый узел в начало списка. * /

    public void push(int new_data)

    {

        / * 1 & 2: выделить узел &

                Введите данные * /

        Node new_node = new Node(new_data);

  

        / * 3. Сделать следующий новый узел в качестве головы * /

        new_node.next = head;

  

        / * 4. Переместить голову, чтобы указать на новый узел * /

        head = new_node;

    }

  

    / * Вставляет новый узел после указанного prev_node. * /

    public void insertAfter(Node prev_node, int new_data)

    {

        / * 1. Проверьте, является ли данный узел пустым * /

        if (prev_node == null)

        {

            Console.WriteLine("The given previous"

                              " node cannot be null");

            return;

        }

  

        / * 2 & 3: выделить узел &

                Введите данные * /

        Node new_node = new Node(new_data);

  

        / * 4. Сделать следующий из нового узла как

              следующий из prev_node * /

        new_node.next = prev_node.next;

  

        / * 5. сделать следующий из prev_node как new_node * /

        prev_node.next = new_node;

    }

      

    / * Добавляет новый узел в конце. Этот метод

    определенный внутри класса LinkedList, показанного выше * /

    public void append(int new_data)

    {

        / * 1. Выделить узел &

        2. Вставьте данные

        3. Установить следующий как ноль * /

        Node new_node = new Node(new_data);

  

        / * 4. Если Связанный список пуст,

        затем сделайте новый узел главой * /

        if (head == null)

        {

            head = new Node(new_data);

            return;

        }

  

        / * 4. Этот новый узел будет последним узлом,

            так что сделайте следующее как ноль * /

        new_node.next = null;

  

        / * 5. Остальной ход до последнего узла * /

        Node last = head; 

        while (last.next != null)

            last = last.next;

  

        / * 6. Изменить следующий из последнего узла * /

        last.next = new_node;

        return;

    }

  

    / * Эта функция печатает содержимое связанного списка

    начиная с данного узла * /

    public void printList()

    {

        Node tnode = head;

        while (tnode != null)

        {

            Console.Write(tnode.data + " ");

            tnode = tnode.next;

        }

    }

  

    // Код драйвера

    public static void Main(String[] args)

    {

        / * Начнем с пустого списка * /

        GFG llist = new GFG();

  

        // Вставляем 6. Таким образом, связанный список становится 6-> NUllist

        llist.append(6);

  

        // Вставить 7 в начале.

        // Таким образом, связанный список становится 7-> 6-> NUllist

        llist.push(7);

  

        // Вставить 1 в начале.

        // Таким образом, связанный список становится 1-> 7-> 6-> NUllist

        llist.push(1);

  

        // Вставить 4 в конце. Таким образом, связанный список становится

        // 1-> 7-> 6-> 4-> NUllist

        llist.append(4);

  

        // Вставляем 8, после 7. Таким образом, связанный список становится

        // 1-> 7-> 8-> 6-> 4-> NUllist

        llist.insertAfter(llist.head.next, 8);

  

        Console.Write("Created Linked list is: ");

        llist.printList();

    }

}

  
// Этот код предоставлен Rajput-Ji


Выход:

 Created Linked list is:  1  7  8  6  4

Вы можете попробовать практиковать вопросы по MCQ в связанном списке

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Связанный список | Набор 2 (вставка узла)

0.00 (0%) 0 votes