Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УЧЕБНИК-Pascal.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
499.71 Кб
Скачать

Задание

  1. Приведите пример списков.

  2. Приведите примеры односвязных списков.

  3. Приведите пример двусвязных списков.

  4. Что нужно сделать для того, чтобы добавить запись в двухсвязный список?

  5. Что нужно сделать для того, чтобы удалить запись из двухсвязного списка?

1.4.2 Очередь

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

Представьте себе, что Вы решили приобрести билет на концерт популярной группы. Вы идете в место продажи билетов, а там уже присутствуют такие же желающие приобрести билеты. Вам ничего не остается, как ждать, пока пришедшие раньше Вас не приобретут билеты, но если кто-то пришел после Вас, он должен дождаться, пока не приобретете билеты Вы. Здесь мы имеем дело с принципом: «Первый пришел, первым ушел!» или на английском языке: «First input, First output». Обычно его называют принципом FIFO.

Очередь – частный случай линейного списка, для которого добавление элемента разрешено только в конец списка (хвост), а удаление элемента - из начала (головы) списка.

Начало очереди

Конец очереди

Рис. 1.14

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

Если количество действий зависит от количества элементов, то такие действия называются массовыми.

Рассмотрим основные действия над очередью. Для того чтобы посмотреть, какие действия мы можем проводить с данными, которые организованы в очередь, введем несколько определений.

Максимальная длина очереди – максимальное количество элементов, которое может находиться в очереди одновременно.

Длина очереди - количество элементов, находящееся в очереди в данный конкретный момент.

Пустая очередь - очередь, в которой нет ни одного элемента.

Первое действие - "Поместить элемент в очередь":

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

Второе действие - "Взять элемент из очереди":

Для того чтобы взять элемент из очереди, необходимо проверить, есть ли элементы в очереди. Если очередь не пуста, то: а) удаляем первый по порядку элемент; б) сдвигаем оставшиеся элементы к началу очереди; в) уменьшаем на единицу значение длины очереди, иначе - ничего не делаем.