Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
програм.docx
Скачиваний:
5
Добавлен:
16.04.2019
Размер:
78.79 Кб
Скачать

9.Очередь

Очередь - это линейная структура переменного размера. Исключение элементов из очереди допускается с одного конца - с начала очереди. Включение элементов возможно лишь в противоположный конец — в конец очереди. Данные в такой структуре обрабатываются в порядке их поступления по принципу: "первым пришел, первым ушел". В литерату­ре структуру очереди называют структурой типа FIFO

Доступ к элементам очереди осуществляется по указателям начала и конца. Указатель начала указывает на элемент очереди, который пер­вым будет исключаться или читаться. Указатель конца устанавливается на свободную ячейку памяти, следующую за последней записью в очере­ди. Именно в эту ячейку разместится вновь пришедшая запись, т.е. новый элемент очереди.

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

При исключении элемента указатель начала изменяется на единицу. Если указатель начала совпадает с указателем конца, то очередь пуста.

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

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

10. Таблица

Таблица - это линейная структура данных, каждый элемент которой характеризуется определенным значением ключа и доступ к элементам которой осуществляется по ключу (произвольный)

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

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

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

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

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

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

Если все N записей таблицы имеют разные значения ключей Ki и най­дена функция f{Ki), такая, что для любого 0 < i < N f(Ki) принимает целое значение от 0 до т, то значение f(Ki) можно рассматривать как адрес ячейки памяти, в которой размещена запись с ключом Ki. Функция f(Ki) называется функцией преобразования или, иначе, функцией расста­новки. Доступ к любой записи осуществляется путем непосредственного вычисления по значению ключа адреса хранения этой записи. Время поиска в таких таблицах минимально и определяется в основном време­нем вычисления f(Ki).