Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Индексно-последовательный способ



Линейный список упорядочивается по первичному ключу. Аналогично блочному методу доступа, он делится на виртуальные блоки размером √N. Затем ключевые поля последних элементов блоков вместе с порядковыми номерами этих элементов в списке включаются в дополнительные списки, которые называются индексами. Таким образом, для списка из таблицы 5 (далее – основного списка):

Таблица 5

№ п/п Фамилия Имя Отчество Номер зачетной книжки Домашний адрес
  Скворцов Олег Иванович   пр. Мира, 45 - 3
  Соколов Юрий Кузьмич   ул. Леонова, 23 - 98
  Строков Иван Иванович   ул. Красная, 9 - 2
  Супруненко Виктор Егорович   Каштановая аллея, 23 - 5

будет построен индекс, представленный в таблице 6:

Таблица 6

№ п/п Фамилия № п/п в основном списке
  Соколов  
  Супруненко  

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

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

Пример 7. Пусть в основном списке таблицы 5 надо просмотреть адрес студента по фамилии Скворцов, т.е. qпросмотр = (Фамилия = Скворцов, Домашний адрес), где Кдоступ = Скворцов. Задача решается следующим образом:

1. выбирается первый элемент в индексе;

2. его ключевое поле сравнивается с искомым: Соколов = Скворцов;

3. поскольку условие не выполняется, проверяется, возможно ли нахождение искомого элемента в текущем, первом, блоке. Для этого проверяется условие: Соколов > Скворцов;

4. условие выполняется, поэтому из соседнего поля индекса выбирается ссылка на последний элемент первого блока в основном списке – это 2;

5. по этому номеру выполняется обращение к предыдущему, т.е. первому, элементу основного списка;

6. ключевое поле этого элемента сравнивается с искомым ключом: Скворцов = Скворцов;

7. поскольку ключевые поля равны, выводится адрес: пр. Мира, 45 – 3; алгоритм заканчивает работу.

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





Дата публикования: 2015-09-17; Прочитано: 215 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...