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
создается коллекция в виде обобщенного двунаправленного списка. В этом классе реализуются интерфейсы ICollection, ICollection
и IDeserializationCallback
. В двух последних интерфейсах поддерживается сериализация списка. В классе LinkedList
public LinkedListO
public LinkedList(IEnumerable
В первом конструкторе создается пустой связный список, а во втором конструкторе — список, инициализируемый элементами из коллекции
Как и в большинстве других реализаций связных списков, в классе LinkedList
инкапсулируются значения, хранящиеся в LinkedListNode
. В классе LinkedListNode
предоставляются четыре следующих свойства.
public LinkedListNode
public LinkedListNode
public LinkedList
public T Value { get; set; }
С помощью свойств Next
и Previous
получаются ссылки на предыдущий и последующий узлы списка соответственно, что дает возможность обходить список в обоих направлениях. Если же предыдущий или последующий узел отсутствует, то возвращается пустая ссылка. Для получения ссылки на сам список служит свойство List
. А с помощью свойства Value
можно устанавливать и получать значение, находящееся в узле списка.
В классе LinkedList
определяется немало методов. В табл. 25.16 приведены наиболее часто используемые методы данного класса. Кроме того, в классе LinkedList
определяются собственные свойства, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются. Эти свойства приведены ниже.
public LinkedListNode
public LinkedListNode
С помощью свойства First
получается первый узел в списке, а с помощью свойства Last
— последний узел в списке.
Таблица 25.16. Наиболее часто используемые методы, определенные в классе LinkedList
Метод - Описание