Читаем C# 4.0: полное руководство полностью

    for(int i=0; i < 20; i++)

      lst.Add((char) ('a' + i));


    Console.WriteLine("Текущая емкость: " + lst.Capacity);

    Console.WriteLine("Количество элементов после добавления 20 новых: " + lst.Count);


    Console.Write("Содержимое: ");

    foreach(char с in lst)

      Console.Write(с + " ") ;


    Console.WriteLine("\n");


    // Изменить содержимое динамического массива,

    // используя индексирование массива.

    Console.WriteLine("Изменить три первых элемента");

    lst[0] = 'X';

    lst[1] = 'Y' ;

    lst[2] = 'Z';


    Console.Write("Содержимое: ");

    foreach(char с in lst)

      Console.Write(с + " ");


    Console.WriteLine();


    // Следующая строка кода недопустима из-за

    // нарушения безопасности обобщенного типа.

    // lst.Add(99); // Ошибка, поскольку это не тип char!

  }

}

Эта версия программы дает такой же результат, как и предыдущая.


Исходное количество элементов: 0


Добавить 6 элементов

Количество элементов: 6

Текущее содержимое: С А Е В D F


Удалить 2 элемента

Количество элементов: 4

Содержимое: С Е В D


Добавить еще 20 элементов

Текущая емкость: 32

Количество элементов после добавления 20 новых: 24

Содержимое: С Е В D a b c d e f g h i j k l m n o p q r s t


Изменить три первых элемента

Содержимое: X Y Z D a b c d e f g h i j k l m n o p q r s t


Класс LinkedList

В классе LinkedList создается коллекция в виде обобщенного двунаправленного списка. В этом классе реализуются интерфейсы ICollection, ICollection, IEnumerable, IEnumerable, ISerializable и IDeserializationCallback. В двух последних интерфейсах поддерживается сериализация списка. В классе LinkedList определяются два приведенных ниже открытых конструктора.


public LinkedListO

public LinkedList(IEnumerable collection)


В первом конструкторе создается пустой связный список, а во втором конструкторе — список, инициализируемый элементами из коллекции collection.

Как и в большинстве других реализаций связных списков, в классе LinkedList инкапсулируются значения, хранящиеся в узлах списка, где находятся также ссылки на предыдущие и последующие элементы списка. Эти узлы представляют собой объекты класса LinkedListNode. В классе LinkedListNode предоставляются четыре следующих свойства.


public LinkedListNode Next { get; }

public LinkedListNode Previous { get; }

public LinkedList List { get; }

public T Value { get; set; }


С помощью свойств Next и Previous получаются ссылки на предыдущий и последующий узлы списка соответственно, что дает возможность обходить список в обоих направлениях. Если же предыдущий или последующий узел отсутствует, то возвращается пустая ссылка. Для получения ссылки на сам список служит свойство List. А с помощью свойства Value можно устанавливать и получать значение, находящееся в узле списка.

В классе LinkedList определяется немало методов. В табл. 25.16 приведены наиболее часто используемые методы данного класса. Кроме того, в классе LinkedList определяются собственные свойства, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются. Эти свойства приведены ниже.


public LinkedListNode First { get; }

public LinkedListNode Last { get; }


С помощью свойства First получается первый узел в списке, а с помощью свойства Last — последний узел в списке.


Таблица 25.16. Наиболее часто используемые методы, определенные в классе LinkedList

Метод - Описание


Перейти на страницу:

Похожие книги

1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT
Разработка приложений в среде Linux. Второе издание
Разработка приложений в среде Linux. Второе издание

Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет СЃРѕР±РѕР№ отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из РґСЂСѓРіРёС… операционных систем. РџРѕРґСЂРѕР±но рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование СЃРІРѕР±одно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Р

Майкл К. Джонсон , Эрик В. Троан

Программирование, программы, базы данных