tree;// покажчик на корінь дерева
void Find_this_symbol (char c)// пошук символів у списку
{<
{(int i = 0; i
{(c == symbol_vector [i]. symbol)// якщо символ вже є в списку
{_vector [i]. amount + +;
// збільшуємо його частоту;// і виходимо з функції
}
}
}
// Інакше додаємо в список новий символ
Symbol_class new_symbol; _symbol.symbol = c; _symbol.amount = 1; _vector.push_back (new_symbol);
} Read_File ()// читання файлу
{input_file ("Input.txt");// відкриваємо файл <<"Оригінальний текст: n"; (! input_file.eof ())
{read_symbol = input_file.get ();// зчитуємо файл посимвольний (! input_file.eof ()) _this_symbol (read_symbol); // шукаємо символ у списку
} _file.close ();// закриваємо файл
}
void Create_Null_Nodes ()// створюємо порожні вузли для дерева
{(int i = 0; i
{* tr = new Tree;> symbol = symbol_vector [i]. symbol;> weight = symbol_vector [i]. amount;> left_son = NULL;> right_son = NULL; _vector . push_back (tr);
}
} Sort ()// Сортування ел-тів дерева по їх вазі
{* temp; repeat;
{= false; (int i = 1; i
{(Tree_vector [i] -> weight> Tree_vector [i-1] -> weight)
{= Tree_vector [i]; _vector [i] = Tree_vector [i-1]; _vector [i-1] = temp; = true;
}
}
} while (repeat);
} Create_Tree ()// створюємо дерево Хаффмана
{(Tree_vector.size ()! = 1)// до тих поки не залишиться один вузол (корінь)
{tr_size = Tree_vector.size ();
Sort ();// сортуємо символи за їх вагою (частоті)
Tree * temp = new Tree;// створюємо новий вузол
// вага нового вузла дорівнює сумі ваг двох ел-тів з найменшою вагою
temp-> weight = _vector [tr_size-2] -> weight + Tree_vector [tr_size-1] -> weight;
// лівий син нового вузла вказує на останній ел-т
temp-> left_son = Tree_vector [tr_size-1];
Tree_vector.pop_back ();// викидаємо зі списку ел-т з мінімальною вагою
// повторюємо операцію для передостаннього ел-та
temp-> right_son = Tree_vector [tr_size-2]; _vector.pop_back ...