Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ФП 5 отчет Ихсанова

.docx
Скачиваний:
0
Добавлен:
07.04.2025
Размер:
781.72 Кб
Скачать

Ихсанова Элина ПРО-432Б

Лабораторная работа №5

Произвольные структуры данных. Деревья.

Вариант 9

Задание на лабораторную работу:

1. Создайте модуль EvalTrees (описанный в тексте пособия Г. А. Макеева).

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

3. Определите тип данных для бинарного поискового дерева: data Ord a => SearchTree a = Empty | Branches a (SearchTree a) (SearchTree a) deriving (Show, Eq), запросите и объясните тип функций-конструкторов-данных Empty и Branches, постройте с помощью этих функций простейшие деревья.

4. Реализуйте в деревьях поиска функции добавления элементов, поиска с выводом (список просмотренных вершин до нужного элемента), проверки сбалансированности дерева и построения идеально сбалансированного дерева. Элементы дерева указаны в вариантах, достаточно 10–15 элементов.

5. Определите тип данных для предложенного в варианте объекта.

6. Реализуйте для определенного в зад.1 типа указанную функцию, переопределив ее. Придумайте и реализуйте еще 2–3 подходящие функции для работы с объектами вашего типа.

Задание №1

Создайте модуль EvalTrees (описанный в тексте пособия Г. А. Макеева).

Решение:

Задание №2

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

Для списка чисел [1,4,5,6] найти с помощью дерева вычислений

a) -4

b) наименьшее целое число

Решение:

a )

b )

Задание №3

Определите тип данных для бинарного поискового дерева: data Ord a => SearchTree a = Empty | Branches a (SearchTree a) (SearchTree a) deriving (Show, Eq), запросите и объясните тип функций-конструкторов-данных Empty и Branches, постройте с помощью этих функций простейшие деревья.

Решение:

Empty — конструктор для создания пустого дерева.

Тип: Empty :: Ord a => SearchTree a

Это просто значение типа SearchTree a, представляющее пустое дерево.

Branches — конструктор, создающий узел дерева.

Тип: Branches :: Ord a => a -> SearchTree a -> SearchTree a -> SearchTree a

Этот конструктор принимает три аргумента:

  • Значение типа a для хранения данных в узле.

  • Левое поддерево типа SearchTree a.

  • Правое поддерево типа SearchTree a.

Р езультатом является новое дерево SearchTree a с указанными значениями и поддеревьями.

Задание №4

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

Список названий групп вашего факультета.

Решение:

Дерево, элементами которого являются группы факультета ИИМРТ:

Задание №5

Определите тип данных для предложенного в варианте объекта.

Алгебраический многочлен переменной х.

Р ешение:

Задание №6

Реализуйте для определенного в зад.5 типа указанную функцию, переопределив ее. Придумайте и реализуйте еще 2–3 подходящие функции для работы с объектами вашего типа.

Функцию сложения многочленов.

Решение:

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