Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТЭИС пособие конспект лекций.doc
Скачиваний:
8
Добавлен:
10.11.2019
Размер:
1.05 Mб
Скачать

3.3. Цепная (списковая) организация данных

Списком называется множество записей, занимающих произвольные участки памяти, последовательность обработ­ки которых задается с помощью адресов связи. Адресом связи некоторой записи называется атрибут, в котором хранится на­чальный адрес или номер записи, обрабатываемой после этой записи. Обычная последовательность обработки записей в списке определяется возрастанием значений ключа в записях.

В списке выделяется собственная информация и адреса связи.

Возможны два способа организации списка - совместное раз­мещение информации, когда за­пись и ее адрес связи образуют одно целое (рис. 3.2 а), и раздель­ное, когда имеется списковая организация адресов связи и последовательное хранение собственной информации (рис. 3.2 ).

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

Рис. 3.2. Варианты списковой организации данных:

а - совместное хранение записей и адресов связи;

б - раздельное хранение записей и адресов связи (0 - конец списка)

а) При формировании упорядоченного списка записей воз­можны два варианта:

- вновь поступающие записи вставлять так, чтобы не на­рушать упорядоченность по ключу;

- создать сначала неупорядоченный список, а затем отсор­тировать его.

Учитывая, что для сортировки можно использовать ме­тод слияния, второй вариант следует признать более целесо­образным.

В итоге время формирования упорядоченного списка пропор­ционально T=M*logM.

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

Для поиска данных в однонаправленном списке используется един­ственный метод - последовательный поиск. Ключевой атрибут пер­вой записи (ее адрес извлекается из указателя списка) сравнивается с искомым значением q, затем такое же сравнение выполняется для ключа второй записи, которая извлекается по адресу связи первой записи, и т. д. Время поиска, естественно, пропорционально Т~М.

Неэффективность бинарного поиска для списковой органи­зации данных объясняется тем обстоятельством, что для дости­жения середины интервала требуется последовательное движе­ние в соответствии с адресами связи и суммарное количество переходов от записи к записи достаточно велико. Для ускорения доступа к списку могут быть рекомендованы такие варианты использования адресов связи, как двунаправлен­ный и кольцевой список (рис3.3):

двунаправленный список образован двумя цепочками ад­ресов связи - от первой записи к последней и от после­дней записи к первой;

в кольцевом списке последний адрес связи указывает на первую запись.

Рисунок 3.3. Организация списков: а - двунаправленного; б - кольцевого

в) Корректировка данных. Цепной каталог

Цепным каталогом называется сплошной участок памяти (или несколько таких участков), в котором одновременно раз­мещаются список обрабатываемых записей и список свобод­ных позиций памяти. Адрес связи, отмечающий первую обра­батываемую запись, называется указателем списка. Адрес связи, отмечающий первую свободную позицию памяти, называется указателем свободной памяти. Адрес связи последней записи (или последней позиции свободной памяти) в списке называет­ся концом списка, и здесь отмечается нулевым значением.

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

а - ставка записи с ключом 61; б - удаление записи с ключом 30

Рисунок 3.4. Операции корректировки в цепном каталоге

Оценка времени корректировки складывается из времени реализации поиска и времени на замену значений адресов свя­зи. В последнем случае число пересылок адресов связи всегда одинаково и не зависит от числа записей в цепном каталоге, поэтому затраты времени на поиск при корректировке явля­ются доминирующими и время корректировки пропорцио­нально Т~М.

г) Объем дополнительной памяти пропорционален М для адресов связи.