Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КУРСОВАЯ ИНФОРМАТИКА Заочники_МСФ / Экзамен / Конспект лекций по ОАиП.pdf
Скачиваний:
80
Добавлен:
18.05.2015
Размер:
959.11 Кб
Скачать

сдвинется в (k+1)-ю компоненту. В процессе работы может оказаться, что вся очередь "сдвинулась" к концу массива, и ее снова нужно вернуть к началу. В этом случае и потребуется s перемещений компонент массива (s - это текущая длина очереди).

Однако наиболее эффективной снова будет реализация при помощи односвязного линейного списка (см. лекцию 10).

Операции

Для очереди должны быть определены следующие операции:

empty(<нач_очереди>):boolean - проверка очереди на пустоту;

add(<кон_очереди>,<нов_эл-т>):<кон_очереди> - добавление элемента в конец очереди;

take_beg(<нач_очереди>):<тип_эл-

- считывание значения первого элемента;

тов_очереди>

 

 

 

take_end(<кон_очереди>):<тип_эл-

- считывание значения последнего

тов_очереди>

элемента;

 

 

del(<нач_очереди>):<нач_очереди>

- удаление элемента из начала очереди.

 

 

Дек

Дональд Кнут1) ввел понятие усложненной очереди, которая называется дек (deque - Double-Ended QUEue - двухконцевая очередь). В каждый момент времени у дека доступны как первый, так и последний элемент, причем добавлять и удалять элементы можно и в начале, и в конце дека. Таким образом, дек - это симметричная двусторонняя очередь.

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

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

Рекурсия

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

Например, рекурсивно определяется функция факториал:

0! =1

n! = n*(n-1)!, для любого натурального n.

Другим примером рекурсивного определения может послужить определение арифметического выражения, приведенное в лекции 2.

Рекурсивные подпрограммы

Впрограммировании рекурсивной называется подпрограмма, исполнение которой приводит

кее же повторному вызову.

Если подпрограмма просто вызывает сама себя, то такая рекурсия называется прямой. Например:

procedure rec1(k: byte);

function rec2(k: byte): byte;

begin

begin

...

...

Соседние файлы в папке Экзамен