e_cabling, backward_brunch, backward_drive.
6. Друк дерева
Для друку дерева введіть «2», як показано на рис. 2:
Рис. 2
Зауважимо, що слово «backward» (підкреслено жовтим) додано до слова «back» (підкреслено блакитним) і тому воно не розбите як наступні слова (підкреслено червоним). Це наслідок того, що слова додавалися не в алфавітному порядку.
7. Пошук елемента
Для пошуку необхідного слова необхідно ввести «3» і саме значення, як показано на рис. 3:
Рис. 3
В даному випадку введено слово «back_transfer», якого немає в дереві. Програма вивела повідомлення, що слово «back_transfer», не знайдено. Якщо ввести для пошуку слово «backup», то програма виведе повідомлення, що слово «backup» знайдено (рис. 4):
Рис. 4
9. Керівництво системного програміста
Для запуску програми необхідно зайти в папку tree/Debug і запустити файл «tree.exe». Програма буде працювати на версіях ОС Windows XP і вище.
Додаток
Програмний код з коментарями:
/**
file MyClass.h (MyClass.cpp)
brief Клас cписок з модулями
Брігаденко
date 13,02,2014
*/
# include lt; list gt;
# include lt; iterator gt;
namespace std;
int MAX_STR=256;// Розмір для буферної змінної
//вузол дереваnode
{: val [MAX_STR];// Змінна для запису суфікса у вузол
//конструктор список покажчиків на можливі вузли lt; node * gt; lstNode;
//покажчик на батька * parent;
//конструктор з парметр (char * node_val);
//конструктор для кореня без параметра ();
//деструктор
~ node ();
/// Друк даний у вигляді дерева «на боці»
/// Рекурсивний обхід дерева праворуч налевоprint (int level=0);
//функція пошуку вузла
//Рекурсивний обхід дерева справа наліво
};
//деревоtree
{: * root;// Покажчик на корінь * zero_node;// Покажчик на порожній вузол
//Забороняємо копіювання і присвоєння (const tree amp;);
tree amp; operator=(const tree amp;);
//закриті внутрішні фунции
//Зробити кореньmake_root (char * root_val)
{b [MAX_STR]=»»;
//створюємо корінь і в нього записуємо покажчик
//на вузол з початком слова=new node (); (b, root_val, 1); * tn=new node (b);// Конструюємо вузол з однією літерою gt; parent=root;// Реєстрація засновниками у нащадка gt; lstNode.push_back (tn);// Реєстрація нащадка у батька
//створюємо перше слово в цій букві
//копіюємо слово без першої літери * tn1=new node (root_val + 1);
//рестрація- gt; parent=tn; gt; lstNode.push_back (tn1);
}
//Вставка вузла * insert_node (char * insert_value, node * start_node=0)
{b [MAX_STR]=»»;// Буфер обміну
if (! root)//якщо дерево пусте створюємо корінь
{
//при створенні створити 3 вузла: порожній рядок - спільний корінь - точка входу в дерево
//вузол по першій букві слова, вузол зі словом без першої літери
make_root (insert_value); root;
}
//перводітся покажчик у вихідне положення на корені
if (! start_node) start_node=root; * tn=start_node; * tnl=zero_node;
if (fd_nd (insert_value) == true)//перевіряємо чи слово в деревеNULL;// Якщо є, то виходимо і говоримо, що слово вже додано
//поки не перебрали всі можливі вузли і якщо нове значення вузла унікальне (tn)
{
//на першому рівні все де є хочаб 1 покажчик на підлеглий рівень букв
//1-й крок - прохожд. за початковими літерами
for each (node ??* tn1 in tn- gt; lstNod...