Huffman's Algorithm implementation on C++. Uses priority_queue for storing nodes. Involves bitwise operations for compressing and decompressing files. At this point, works fine with some types of files
Contents of HeaderFile:
#include <string>
#include <unordered_map>
struct | Node |
Структура узла дерева Хаффмана Узел дерева Хаффмана содержит символ, частоту его появления, а также указатель на сопряжённые ветви. More... | |
struct | comp |
Структура, описывающая операцию сравнения элементов для приоритетной очереди More... | |
int | check_task (char *argv[]) |
Функция для определения задачи (сжатие / разархивация) More... | |
std::string | gen_en_filename (std::string original) |
Функция для генерации имени сжатого файла More... | |
std::string | gen_de_filename (std::string original) |
Функция для генерации имени разархивированного файла More... | |
void | insert_zeros_counter (std::ofstream &outfile, int bits) |
Функция для записи кол-ва дополнительных нулей в бинарный файл More... | |
void | writeBinaryString (std::ofstream &outfile, std::string &str) |
Функция для записи битовой строки в бинарный файл More... | |
void | writeBinaryTree (Node *node, std::string &result) |
Функция для генерации строковой репрезентации бинарного дерева Хаффмана More... | |
Node * | readBinaryTree (std::string &str, int &index) |
Функция для генерации бинарного дерева Хаффмана на основе его строковой репрезентации More... | |
int | parse_file (std::string &name, std::string &text) |
Функция для считывания исходного текста More... | |
int | parse_tree (std::ifstream &infile, std::string &text) |
Функция для считывания строковой репрезентации дерева из бинарного файла More... | |
void | parse_binary_text (std::ifstream &infile, std::string &text, int tree_size, int zeros) |
Функция для считывания байтов текста из бинарного файла More... | |
Node * | addNode (char ch, int freq, Node *left, Node *right) |
Функция для создания узла More... | |
int | pack (std::string &name) |
Функция для архивации текста More... | |
void | encode (Node *root, std::string str, std::unordered_map< char, std::string > &huffmanCode) |
Функция для определения кодов символов More... | |
std::unordered_map< char, int > | find_frequency (std::string &text) |
Функция для определения частоты употребления символов в исходном тексте More... | |
Node * | build_tree (std::unordered_map< char, int > freq) |
Функция для генерации дерева Хаффмана More... | |
int | unpack (std::string &name) |
Функция для разархивации текста More... | |
void | decode (Node *root, std::string &str, std::ofstream &outfile) |
Функция для декодирования битовой последовательности More... | |