Cтраница 4
Кроме того, требуется дополнительная память для создания связанного списка. Если элементы изначально сохранены в массиве, то проще и обычно быстрее использовать один из алгоритмов для массивов, представленных ранее. [46]
Упражнение 2.18. Другим возможным способом представления строк символов является связанный список, в котором каждый символ ( или, возможно, группа символов) также имеет указатель к следующему. В чем состоят сильные и слабые стороны такого представления. [47]
![]() |
Сильно разреженный массив. [48] |
Чтобы расположить элемент в массиве, нужно вначале просмотреть связанный список ячеек TRowCell, пока не найдется требуемая строка. Затем просматривается связанный список строк, пока не отыщется нужный столбец. [49]
![]() |
Массив Item. [50] |
На рис. 7.2 показано применение указателей для создания структуры связанного списка как альтернативы фиксированному массиву, встретившемуся в программе на распечатке 7.3 и изображенному на рис. 7.1. Обратите внимание на то, что список состоит из узлов, составленных из двух частей. Первая часть - данные, представляющие собой в этом случае одно число. [51]
Массивы всегда имеют фиксированный размер, тогда как размер связанного списка может изменяться динамически во время выполнения программы. [52]
Так же легко вставить новый элемент и в середину связанного списка. [53]
![]() |
Иллюстрация к определению вершин Ft н I /. [54] |
В процессе работы алгоритма граница К хранится в виде дважды связанного списка вершин и связывающих их ребер. Этот список будет линейным или циклическим в зависимости от того, является ли Ki соответственно неограниченным или ограниченным. В первом случае первый и последний члены списка называются соответственно головой и хвостом списка. [55]
В качестве примера рассмотрим ПЛ / 1-процедуру, которая строит однонаправленный связанный список путем добавления к списку аргумента, передаваемого процедуре при ее вызове. Мы предположим, что каждый узел содержит две переменные: COORD ( представляет значения двух координат) и LINK. Переменная CURSOR будет содержать адрес последнего присоединенного узла. [56]
Анализируя последовательности операторов, предназначенные для выполнения включения элементов в двунаправленный связанный список и для исключения из него элементов, убедитесь в правильности их действия в следующих специальных случаях: а) включение элемента в пустой список по указателю head; б) включение элемента в пустой список по указателю tail; в) исключение элемента из списка, в котором содержится только один элемент. [57]
Программа List OOP описывает статическую переменную Aiist типа List и создает связанный список с десятью узлами. Каждый узел указывает на отдельную графическую фигуру, которой является либо объект Point, либо один из его производных типов. Количество байтов свободной динамической области выводится при создании динамических объектов, а затем снова, котда все они будут удаляться. [58]
Следующая программа показывает, как может быть создан в динамической области связанный список графических объектов я как он может быть очищен, используя вызовы деструктора, селя он станет больше ненужным. [59]
![]() |
Целочисленный массив из 100 элементов ( я и результат добавления к нему нового элемента ( б 118. [60] |