Рубрики

Реализация связанного списка в C #

LinkedList — это линейная структура данных, которая хранит элемент в несмежном местоположении. Элементы в связанном списке связаны друг с другом с помощью указателей. Или, другими словами, LinkedList состоит из узлов, где каждый узел содержит поле данных и ссылку (ссылку) на следующий узел в списке.
В C # LinkedList — это универсальный тип коллекции, который определен в пространстве имен System.Collections.Generic . Это двусвязный список , поэтому каждый узел указывает вперед на следующий узел и обратно на предыдущий узел. Это динамичная коллекция, которая растет в соответствии с потребностями вашей программы. Это также обеспечивает быструю вставку и удаление элементов.

Важные моменты:

  • Класс LinkedList реализует интерфейсы ICollection <T> , IEnumerable <T> , IReadOnlyCollection <T> , ICollection , IEnumerable , IDeserializationCallback и ISerializable .
  • Он также поддерживает счетчики.
  • Вы можете удалить узлы и повторно вставить их либо в тот же список, либо в другой список, что не приведет к выделению дополнительных объектов в куче.
  • Каждый узел в объекте LinkedList <T> имеет тип LinkedListNode <T>.
  • Он не поддерживает связывание, разбиение, циклы или другие функции, которые могут оставить список в несогласованном состоянии.
  • Если LinkedList пуст, свойства First и Last содержат значение null.
  • Емкость LinkedList — это количество элементов, которые LinkedList может содержать.
  • В LinkedList разрешено хранить дубликаты элементов одного типа.

Как создать LinkedList?

Класс LinkedList имеет 3 конструктора, которые используются для создания LinkedList, а именно:

  • LinkedList (): этот конструктор используется для создания пустого экземпляра класса LinkedList.
  • LinkedList (IEnumerable): этот конструктор используется для создания экземпляра класса LinkedList, который содержит элементы, скопированные из указанного IEnumerable, и имеет достаточную емкость для размещения количества скопированных элементов.
  • LinkedList (SerializationInfo, StreamingContext): этот конструктор используется для создания экземпляра класса LinkedList, который сериализуем с указанными SerializationInfo и StreamingContext.

Давайте посмотрим, как создать LinkedList с помощью конструктора LinkedList () :

Шаг 1: Включить System.Collections.Generic имен в вашей программе с помощью использования ключевого слова:

using System.Collections.Generic;

Шаг 2. Создайте LinkedList, используя класс LinkedList, как показано ниже:

LinkedList <Type_of_linkedlist> linkedlist_name = new LinkedList <Type_of_linkedlist>();

Шаг 3: LinkedList предоставляет 4 различных метода для добавления узлов, а именно:

  • AddAfter: этот метод используется для добавления нового узла или значения после существующего узла в LinkedList.
  • AddBefore: этот метод используется для добавления нового узла или значения перед существующим узлом в LinkedList.
  • AddFirst : этот метод используется для добавления нового узла или значения в начале LinkedList.
  • AddLast : этот метод используется для добавления нового узла или значения в конце LinkedList.

Шаг 4: Доступ к элементам LinkedList осуществляется с помощью цикла foreach или цикла for. Как показано в примере ниже.

Пример:

// C # программа для иллюстрации того, как
// создать LinkedList

using System;

using System.Collections.Generic;

  

class GFG {

  

    // Основной метод

    static public void Main()

    {

  

        // Создание связанного списка

        // Использование класса LinkedList

        LinkedList<String> my_list = new LinkedList<String>();

  

        // Добавление элементов в LinkedList

        // Использование метода AddLast ()

        my_list.AddLast("Zoya");

        my_list.AddLast("Shilpa");

        my_list.AddLast("Rohit");

        my_list.AddLast("Rohan");

        my_list.AddLast("Juhi");

        my_list.AddLast("Zoya");

  

        Console.WriteLine("Best students of XYZ university:");

  

        // Доступ к элементам

        // LinkedList Использование цикла foreach

        foreach(string str in my_list)

        {

            Console.WriteLine(str);

        }

    }

}

Выход:

Best students of XYZ university:
Zoya
Shilpa
Rohit
Rohan
Juhi
Zoya

Как удалить элементы из LinkedList?

В LinkedList разрешено удалять элементы из LinkedList. Класс LinkedList <T> предоставляет 5 различных методов для удаления элементов, и методы:

  • Clear () : этот метод используется для удаления всех узлов из LinkedList.
  • Remove (LinkedListNode) : этот метод используется для удаления указанного узла из LinkedList.
  • Remove (T) : этот метод используется для удаления первого вхождения указанного значения из LinkedList.
  • RemoveFirst () : этот метод используется для удаления узла в начале LinkedList.
  • RemoveLast () : этот метод используется для удаления узла в конце LinkedList.

Пример:

// C # программа для иллюстрации того, как
// удаляем элементы из LinkedList

using System;

using System.Collections.Generic;

  

class GFG {

  

    // Основной метод

    static public void Main()

    {

  

        // Создание связанного списка

        // Использование класса LinkedList

        LinkedList<String> my_list = new LinkedList<String>();

  

        // Добавление элементов в LinkedList

        // Использование метода AddLast ()

        my_list.AddLast("Zoya");

        my_list.AddLast("Shilpa");

        my_list.AddLast("Rohit");

        my_list.AddLast("Rohan");

        my_list.AddLast("Juhi");

        my_list.AddLast("Zoya");

  

        // Начальное количество элементов

        Console.WriteLine("Best students of XYZ "+

                         "university initially:");

  

        // Доступ к элементам

        // Linkedlist Использование цикла foreach

        foreach(string str in my_list)

        {

            Console.WriteLine(str);

        }

  

        // После использования Remove (LinkedListNode)

        // метод

        Console.WriteLine("Best students of XYZ"+

                         " university in 2000:");

  

        my_list.Remove(my_list.First);

  

        foreach(string str in my_list)

        {

            Console.WriteLine(str);

        }

  

        // После использования метода Remove (T)

        Console.WriteLine("Best students of XYZ"+

                         " university in 2001:");

  

        my_list.Remove("Rohit");

  

        foreach(string str in my_list)

        {

            Console.WriteLine(str);

        }

  

        // После использования метода RemoveFirst ()

        Console.WriteLine("Best students of XYZ"+

                         " university in 2002:");

  

        my_list.RemoveFirst();

  

        foreach(string str in my_list)

        {

            Console.WriteLine(str);

        }

  

        // После использования метода RemoveLast ()

        Console.WriteLine("Best students of XYZ"+

                         " university in 2003:");

  

        my_list.RemoveLast();

  

        foreach(string str in my_list)

        {

            Console.WriteLine(str);

        }

  

        // После использования метода Clear ()

        my_list.Clear();

        Console.WriteLine("Number of students: {0}",

                                     my_list.Count);

    }

}

Выход:

Best students of XYZ university initially:
Zoya
Shilpa
Rohit
Rohan
Juhi
Zoya
Best students of XYZ university in 2000:
Shilpa
Rohit
Rohan
Juhi
Zoya
Best students of XYZ university in 2001:
Shilpa
Rohan
Juhi
Zoya
Best students of XYZ university in 2002:
Rohan
Juhi
Zoya
Best students of XYZ university in 2003:
Rohan
Juhi
Number of students: 0

Как проверить наличие элементов в LinkedList?

В LinkedList вы можете проверить, присутствует ли данное значение или нет, используя метод Contains (T) . Этот метод используется, чтобы определить, находится ли значение в LinkedList.

Пример:

// C # программа для иллюстрации того, как
// проверить, является ли данный
// элемент присутствует или нет
// в LinkedList

using System;

using System.Collections.Generic;

  

class GFG {

  

    // Основной метод

    static public void Main()

    {

  

        // Создание связанного списка

        // Использование класса LinkedList

        LinkedList<String> my_list = new LinkedList<String>();

  

        // Добавление элементов в список ссылок

        // Использование метода AddLast ()

        my_list.AddLast("Zoya");

        my_list.AddLast("Shilpa");

        my_list.AddLast("Rohit");

        my_list.AddLast("Rohan");

        my_list.AddLast("Juhi");

  

        // Проверяем, является ли данный элемент

        // доступно или нет

        if (my_list.Contains("Shilpa") == true

        {

            Console.WriteLine("Element Found...!!");

        }

        else 

        {

            Console.WriteLine("Element Not found...!!");

        }

    }

}

Выход:

Element Found...!!

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

Реализация связанного списка в C #

0.00 (0%) 0 votes