#include #include #include #ifndef COMPRESSOR_H #define COMPRESSOR_H int compress_1(const char* input_file_name, const char* output_file_name); int decompress_1(const char* input_file_name, const char* output_file_name); int compress_2(const char* input_file_name, const char* output_file_name); int decompress_2(const char* input_file_name, const char* output_file_name); unsigned char* read_file(const char* file_name, size_t* size); int write_file(const char* file_name, const unsigned char* buffer, size_t size); typedef struct HuffmanNode { unsigned char symbol; size_t frequency; struct HuffmanNode* left; struct HuffmanNode* right; } HuffmanNode; HuffmanNode* build_huffman_tree(const unsigned char* data, size_t size); void generate_huffman_codes(HuffmanNode* root, char** codes, char* buffer, int depth); void free_huffman_tree(HuffmanNode* root); HuffmanNode* deserialize_tree(FILE* file); #endif