Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
структуры и алгоритмы / Лекции_лабор_структ.doc
Скачиваний:
56
Добавлен:
04.06.2015
Размер:
2.98 Mб
Скачать

4.4 Организация и представление линейных связных списков в памяти эвм

Остановимся на вопросах организации и представления линейных связных списков в машинной памяти. Прежде всего, отметим, что операция исключения элемента из одного списка логически влечет за собой операцию включения исключенного элемента в другой список. Это означает, что при использовании списковых структур в системе создается не менее двух списков, один из которых (функциональный список) предназначается для хранения той или иной полезной информации, а другой содержит свободные элементы. В системе могут существовать одновременно много списков. Если элементы всех функциональных списков имеют одну и ту же структуру и размер, то на всю группу этих списков достаточно иметь один свободный список. В противном случае придется создавать и поддерживать столько свободных списков, сколько имеется разных структур элементов функциональных списков в системе.

Первоначально, как правило, все списки в системе, за исключением свободных списков, пусты и каждый занимает в машинной памяти участок, необходимый лишь для дескриптора. При этом свободные списки имеют максимальное число элементов. Каждый свободный список первоначально занимает в памяти непрерывную область. Физически последовательность элементов в такой области безразлична, но обычно элементы свободного списка первоначально размещаются в отведенной им области памяти в том же физическом порядке, в каком они связаны в список. Поля дескриптора свободного списка имеют значения, определяемые адресом первого элемента списка, числом элементов в списке и другими величинами, которые включаются в дескриптор.

В процессе работы той программно-информационной системы, в которую входят списки, происходит многократная перекачка элементов из свободного списка в функциональные списки и наоборот, а также из одного функционального списка в другой. В результате этого изменяются число и последовательность элементов в разных списках, а в области памяти, занимаемой элементами того или иного списка, могут появиться многочисленные "дыры", в которых содержатся элементы других списков.

4.5 Представление стеков, очередей и деков линейными списками

Линейные связные списки весьма удобны для организации и обработки таких структур данных с линейным упорядочением элементов, которые могут быть подвержены частым и непредвиденным изменениям по числу элементов. Рассмотренные ранее стеки, очереди и деки могут быть представлены не только в виде векторов с переменной и ограниченной длиной, но также и связными линейными списками, причем в этом случае для стека, очереди или дека всякий раз резервируется такой объем памяти, который необходим для текущего числа элементов структуры. Представление очереди с помощью линейного связного списка позволяет достаточно просто обеспечивать любые желаемые дисциплины включения элементов в очередь и исключения их из очереди и достигать высокой гибкости в управлении памятью. По этой причине очереди с трудно предсказуемым числом элементов или очереди со специальными дисциплинами обработки, возникающие в операционных системах ВС при имитационном моделировании систем массового обслуживания, в задачах управления ресурсами и других задачах, часто реализуются с помощью линейных связных списков. Не следует, однако, забывать, что в связной списковой структуре прямой, или вычисляемый, доступ к элементу невозможен. Вместо этого приходится последовательно проходить по цепочке элементов до тех пор, пока не будет достигнут заданный элемент или пока не будет обнаружено, что желаемого элемента в списке нет. Вследствие такого последовательного доступа время обращения к элементу связного списка (линейного или нелинейного) обычно намного больше времени доступа к элементу любой другой структуры, имеющей последовательное, или векторное, представление в машинной памяти.

Соседние файлы в папке структуры и алгоритмы