НАЗАД

C#. Часть 2.

Создание связного списка с помощью класса LinkedList

Класс LinkedList по сути является классом для создания двухсвязных списков. Подробно связные списки рассматриваются в статье «С#.Часть 1. Связные списки (построение спсика без использования стандартных классов)».
Класс LinkedList содержит элементы класса LinkedListNode. Класс LinkedListNode позволяет обратиться к предыдущему и следующему элементу списка. Данный класс определяет свойства List, Next, Previous, Value. Свойство List возвращает объект LinkedList, ассоциированный с узлом. Свойства Next и Previous предназначены для перехода по списку и доступу к предыдущему и следующему элементам. Свойство Value возвращает элемент данных связанный с конкретным узлом. В предыдущей статье все создавалось ручным способом без использования специальных классов.
Класс LinkedList реализует интерфейс ICollection, ICollection, IEnumerable, I Enumerable, ISerializable, IDeserializationCallback.
Данный класс содержит два констрктора:

Класс LinkedList имеет методы: Ниже приведен демонстрационный код приложения для создания списка. Создадим консольное приложение. Само приложение и его исходный код вы можете загрузить по ссылке в конце статьи.

class Program
{
    static void Main(string[] args)
    {
        LinkedList ll01_test = new LinkedList();
        ll01_test.AddFirst("First Record");
        ll01_test.AddFirst("Second Record");
        ll01_test.AddFirst("Therd Record");
        ll01_test.AddFirst("Fourth Record");
        ll01_test.AddFirst("Fifth Record");
        LinkedList ll02_test = new LinkedList();
        ll02_test.AddFirst("one");
        ll02_test.AddAfter(ll02_test.First, "two");
        ll02_test.AddBefore(ll02_test.Last, "three");
        goDirect(ll01_test);
        goBack(ll01_test);
        goDirect(ll02_test);
        goBack(ll02_test);
        Console.ReadKey();
    }
    static void goDirect(LinkedList ll)
    {
        LinkedListNode knot;
        Console.WriteLine("Elements are in direct order: ");
        for (knot = ll.First; knot != null; knot = knot.Next)
            Console.WriteLine(knot.Value);
    }
    static void goBack(LinkedList ll)
    {
        LinkedListNode knot;
        Console.WriteLine("Elements are in upside-down order: ");
        for (knot = ll.Last; knot != null; knot = knot.Previous)
            Console.WriteLine(knot.Value);
    }
}

Важно обратить внимание, что при использовании метода AddFirst при создании списка каждый новый элемент будет устанавливаться на первое место в списке, соответственно в конце ввода, первый введенный элемент станет последним. Это нам и показывает список ll01_test (если вы запустите программу, доступную по ссылке ниже, вы сможете это увидеть).

Исполняемый код вышеприведенного примера ConnectedList(LinkedList) в архиве 7z



Николай Ткаченко, 2015 г.