n="justify"> В· 2, якщо видалено останній об'єкт з проміжної вершини.
Метод стиснення файлу
void compress ();
Стиснення файлу шляхом збору корисної інформації з файлу і створення нового файлу і дерева в ньому на основі цієї інформації. Використовує безліч допоміжних методів, які буде описані далі. p align="justify"> Метод відображення інформації на екран
void showfile (); showfile (ulong p, int sp);
Відображення дерева в консолі. Для зручності реалізації та з огляду на те, то ширина консольного вікна обмежена, дерево виводиться "боком", тобто воно повернене на вліво. (Малюнок 10)
В
Малюнок 10. Приклад виведення дерева з об'єктів типу intна екран
Метод без параметрів публічний і викликається з main (). Метод з параметрами виконує безпосередньо висновок на екран, приймаючи на вхід файловий покажчик pна вершину дерева і кількість прогалин для відступу від краю до даних вершини. Це робиться для того, щоб отделеіть візуально рівні дерева. Далі рекурсивно викликається ця ж сама функція, передаючи їй покажчик на нащадка і кількість прогалин sp + n, де n кількість прогалин необхідне для відображення даних одного вузла. p> Оскільки структура даних може містити об'єкти різних типів, у тому числі і для користувача класи, можливий випадок, когдаместо займає на екрані одним об'єктом досить велика, наприклад об'єкт рядок. Тоді доцільно виводити кожен об'єкт такого типу з нового рядка. У даній роботі використовується користувальницький клас Time, реалізований на лабораторних роботах. Об'єкт класу на екрані виглядає наступним чином:
четвер 17 19: 19: 20
очевидно, що краще виводити кожен новийтакой об'єкт з нового рядка.
щоб не вводити спеціалізацію методадля таких класів, як Time, можна використовувати механізм динамічної ідентифікації типів RTTI. Тоді все можна зробити одним методом, перевіряючи в ньому тип вхідного об'єкту за допомогою класу typeid (T) і його поля name, і використовувати для нього свій формат виводу. p> Прості чисельні типи виводяться на екран через пропуск.
Допоміжні методи
voidGetInfoNode (ulongp, ulong & l, ulong & r, ulong & n, ulong * m);
Метод, що зчитує інформацію у вершині, що знаходиться за вказівником p, таку як, покажчик на ліве і праве піддерево, коліество об'єктів в МУ і сам МУ. Записує інформацію в змінні, передані за посиланням (l, r, NИ m відповідно). Numberofnode (ulongp, ulong & num);
Рекурсивний симетричний обхід дерево (ліве-корінь-праве), що виробляє підрахунок кількості об'єктів у дереві. Зберігає кількість в змінну num, передане за посиланням. Метод використовується при стисненні файлу, балансування дерева, створенні поддерева з локального набору об'єктів. Безпосередньо він використовується для оголошен...