-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathHuffman.h
41 lines (31 loc) · 1.08 KB
/
Huffman.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#pragma once
//Haffman's algorithm
//ïîäêëþ÷àåì áèáëèîòåêè
#include <iostream>
#include <functional>
//î÷åðåäü ñ ïðèîðèòåòàìè
#include <queue>
//àññîöèàòèíûé ìàññèâ(êàðòà)
#include <map>
#include <algorithm>
#include <bitset>
#include "tree.h"
//ñòðóêòóðà äëÿ õðàíåíèÿ ñèìâîëà, ñ åãî ÷àñòîòîé â òåêñòå
struct Freq_Letter{
//ñèìâîë
char ch;
//÷àñòîòà
int frequency;
//îïðåäåëèì êîíñòðóêòîð äëÿ ñòðóêòóðû
Freq_Letter(char ch_ = 'a', int frequency_ = 0): ch(ch_), frequency(frequency_){};
};
bool greaterFreqLet(const Freq_Letter& l1, const Freq_Letter& l2);
//Ôóíêöèÿ âîçâðàùàåò àññîöèàòèâíûé ìàññèâ, â êîòîðîì ñîäåðæèòñÿ
//char - ñèìâîë, vector<bool> - åãî ïðåäñòàâëåíèå â âèäå áèòîâ
//ïðîãðàììà ïðîñòåéøàÿ, ïðèíèìàåò â êà÷åñòâå àðãóìåíòà string
void Huffman_get_code(std::string in_file, std::string out_file);
//1 - óäà÷íîå êîäèðîâàíèå, 0 - ïðîâàë
bool writeHuffmancode(std::string file_in, std::string file_out,
std::map<char, std::vector<bool>> code_map, long int count_sym);
//÷òåíèå è êîäèðîâêà â íîðìàëüíóþ ôîðìó
bool Huffman_decode(std::string in_file, std::string out_file);