Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Звіт С1 - .docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
231.4 Кб
Скачать

3.1 Загальний алгоритм написання програми

  • Створення типів структур даних і вузла, а також базових функцій: додавання, віднімання, знаходження вузлів, визначення максимальних і мінімальних висот дерева, роз друк дерева. Занесення їх коду у спеціальний файл призначений для запису базових функцій (General_Fun.cpp), які будуть доступні всім файлам програми. Також створення хедер файлу (fun_prototupes.h), який буде підключений до усіх файлів програми і занесення прототипів базових функцій у нього.

  • Створення головного файлу програми (main_many.cpp), який міститиме функцію main і функцію яка відкриває діалог головного меню. Головане меню містить 4 розділи: 1 - робота з деревом; 2 - робота з диском; 3 - робота з декількома деревами; 4 - додаткові можливості.

  • Створення окремих файлів для кожного з вище наведених розділів меню. Створення функцій, які відкривають діалоги розділів для кожного з наведених розділів і занесення цих функцій у файл розділу. Для кожного з розділів головного меню створення функції, прототип якої заноситься у хедер файл і яка буде викликатися функцією main, які будуть викликати функцію відкриття діалогу, а також інші функції даного файлу розділу, які не будуть доступні іншим файлам, сама функція міститься у файлі розділу.

  • Перший, третій і четвертий файли розділів будуть у основному містити функції діалогів різних пунктів розділів, які будуть оперувати з базовими функціями. Четвертий пункт меню може містити додаткові функції і засоби. Другий пункт меню міститиме функції для збереження даних дерева на диск і формування дерева при зчитуванні цих даних.

  • Створення функцій для балансування червоно-чорних дерев і занесення їх у новий файл програми (Balanse_Fun.cpp). Підключення функцій балансування до базових функцій.

3.2 Алгоритми основних функцій

Оскільки основними і найскладнішими функціями програми, окрім функцій балансування являються, функції додавання, віднімання і пошуку елементів, буде описаний їх алгоритм роботи. Інші функції програми не являються складними у реалізації, тому їхні алгоритми наводитися не будуть.

3.2.1 Алгоритм пошуку вузла

Алгоритм пошуку вузла не являється складним у реалізації, але він застосовується у інших алгоритмах наведених нижче, тому для спрощення цих алгоритмів у них буде посилання на даний алгоритм. Пошук здійснюється за ключем.

Крок 1

Пошук починається з кореня, поточний вузол корінь.

Крок 2

Якщо поточний вузол листок (його адреса NULL), шуканий вузол не існує, завершуємо виконання.

Крок 3

Якщо поточний вузол має ключ рівний шуканому ключу, шуканий вузол знайдено, завершуємо виконання.

Крок 4

Якщо ключ поточного вузла менший за ключ нового, робимо поточним лівий нащадок вузла, інакше правий. Переходимо до кроку 2.

3.2.2 Алгоритм додавання вузла

Крок 1

Пошук починається з кореня, поточний вузол корінь.

Крок 2

Якщо поточний вузол листок (його адреса NULL), виділяємо пам'ять під новий вузол, записуємо ключ і дані у нього, ініціалізуємо його нащадків листками, записуємо його за поточним листком (через приєднання адреси нового вузла до батька поточного листка). Завершуємо виконання.

Крок 3

Якщо поточний вузол має ключ рівний ключу нового вузла, ключ вже існує, завершуємо виконання (у цьому випадку також можна виконувати інші дії, наприклад заміна даних вузла на нову дані, чи їх додавання до старих даних).

Крок 4

Якщо ключ поточного вузла менший за ключ нового, робимо поточним лівий нащадок вузла, інакше правий. Переходимо до кроку 2.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]