Курсовая работа: Структура данных программного комплекса Q-дерево
- тип – целый;
- область видимости – внутри и вне модуля;
- используется в операциях вставки и удаления элементов дерева для проверки числа точек в листьях.
2.1.4 Подпрограммы модуля
2.1.4.1 Функция InsertPoint
· Функция предназначена для вставки нового элемента в Q-дерево
· Параметры
- выходной параметр – указатель на узел дерева, в которое вставляется элемент (тип PNode);
- входной параметр – границы этого узла (тип TRect);
- входной параметр – координаты вставляемой точки (тип TPoint);
· Функция возвращает логическое значение (тип boolean), указывающее на изменение количества элементов в дереве
· Локальные переменные
- CurNode – текущий квадрант (тип PNode);
- DopArray– дополнительный массив, необходимый при делении листа на новые узлы (тип TArrayOfPoints);
- midX, midY– координаты середины узла (тип real);
- NewBounds– границы нового узла, передаваемые в качестве параметра в рекурсивном вызове функции (тип TRect);
- i – счетчик цикла (тип integer).
· Словесный алгоритм
В начале своей работы функция проверяет, не является ли пустым параметр-указатель; если да, то для него выделяется память, устанавливаются начальные значения полей и вставляется новый элемент. Если он не является листом, осуществляется цикл переходов к листу с нужными границами. Далее проверяется число элементов в листе, и, если оно меньше допустимого, туда вставляется новая точка; иначе этот лист разделяется на 4 новых, его точки рекурсивно распределяются по новым листам и затем – вставка новой точки.
2.1.4. 2 Процедура DeletePoint
· Процедура предназначена для удаления элемента из Q-дерева
· Параметры
- выходной параметр – указатель на корневой узел дерева, из которого удаляется элемент (тип PNode);
- входной параметр – границы этого узла (тип TRect);
- входной параметр – координаты вставляемой точки (тип TPoint);
· Предусловия
Указатель на дерево не должен быть пустым
· Локальные переменные
- CurNode – текущий квадрант (тип PNode);
- ParentNode – родительский узел листа с удаляемой точкой;
- DopArray – дополнительный массив, необходимый при делении листа на новые узлы (тип TArrayOfPoints);
- midX, midY – координаты середины узла (тип real);