
ФП 5 отчет Ихсанова
.docxИхсанова Элина ПРО-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 подходящие функции для работы с объектами вашего типа.
Функцию сложения многочленов.
Решение:
В
ывод:
в
ходе лабораторной работы научились
работать с произвольными структурами
данных – деревьями. А также определили
свой тип данных и написали для него
функции.