Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебно-практическое пособие ПРОГ лаб.раб..doc
Скачиваний:
19
Добавлен:
20.11.2019
Размер:
3.08 Mб
Скачать

Пример выполнения работы

Рассмотрим 30 вариант. В данном варианте требуется разработать алгоритмы выполнения операций ENQUEUE(x,Q) и DEQUEUE(Q) АТД «Очередь», при этом следует использовать указатели.

Очередь представляет собой специальный вид списка. Оператор ENQUEUE(x,Q) вставляет элемент x в конец очереди Q. С помощью операторов списка этот оператор может быть реализован следующим образом: INSERT(x, NEXT(LAST(Q),Q), Q). Оператор DEQUEUE(Q) удаляет первый элемент очереди Q. C помощью операторов списка данный оператор может быть реализован следующим образом: DELETE(FIRST(Q),Q).

Р еализация очереди на указателях проиллюстрирована на рис. Л5.1.

Из рисунка видно, что в структуре очереди Q хранится указатель как на первый элемент списка (поле Firstelem), так и на последний (поле Lastelem). Число элементов очереди сохраняется в поле Size. Очередь, изображенная на рис.Л5.1, состоит из трех элементов.

При такой реализации очереди алгоритм операции ENQUEUE(x,Q) состоит в следующем:

  1. Создать новый элемент, на который указывает ячейка n.

  2. В новом элементе поле element инициализировать значением x, а поле next – значением nil.

  3. Если число элементов очереди не равно нулю (в структуре очереди поле Lastelem не равно nil или же поле Size не равно нулю), то полю next последнего элемента очереди присвоить значение n.

  4. В структуре очереди полю Lastelem присвоить значение n, и увеличить значение поля Size на единицу.

Данный алгоритм представлен блок-схемой на рис.Л5.2.

Алгоритм операции DEQUEUE(Q) состоит в следующем:

Если очередь пуста (в структуре очереди поле Firstelem равно nil или же поле Size равно нулю), то выдать соответствующее предупреждение и закончить операцию, иначе выполнить следующие действия:

  1. Запомнить указатель на первый элемент очереди в переменной r.

  2. В структуре очереди полю Firstelem присвоить значение указателя на второй элемент очереди.

  3. Освободить память, на которую ссылается указатель r.

  4. В структуре очереди уменьшить значение поля Size на единицу.

Данный алгоритм представлен блок-схемой на рис.Л5.3.

Контрольные вопросы к защите

  1. Понятие типа данных.

  2. Понятие АТД.

  3. Понятие СД.

  4. Механизмы агрегирования ячеек (массивы, записи, файлы).

  5. Указатели.

  6. АТД список.

  7. Операторы списка.

  8. Реализация списков с помощью массивов.

  9. Реализация списков с помощью указателей.

  10. АТД стек.

  11. Операторы стека.

  12. АТД очередь.

  13. Операторы очереди.

  14. Проанализируйте преимущества и недостатки различных способов реализации списков.

Способ оценки результатов

Критерии оценки результатов лабораторной работы №5 не отличаются от критериев оценки результатов лабораторной работы №1.

Лабораторная работа №6.Представление графов в памяти ЭВМ.

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

Требования к содержанию, оформлению и порядку выполнения

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

Теоретическая часть

Необходимая информация по выполнению лабораторной работы приведена в учебном пособии.

Общая постановка задачи

Требуется разработать алгоритм преобразования исходной СД хранения графа в выходную СД. Варианты заданий представлены в таблице в следующем разделе.

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

Список индивидуальных данных

В таблице Л6.1 приведены варианты заданий. Каждая строка таблицы соответствует варианту. Например, в первом варианте требуется разработать алгоритм преобразования матрицы смежности графа в матрицу инцидентности, задающую тот же граф.

Таблица Л6.1

Варианты заданий лабораторной работы №3

варианта

Исходная СД

Выходная СД

матрица смежности

матрица инцидент-ности

массив ребер

массивы смежности

список ребер

списки смежности

матрица смежности

матрица инцидент-ности

массив ребер

массивы смежности

список ребер

списки смежности

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö

Ö