-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchar_info_node.h
35 lines (22 loc) · 962 Bytes
/
char_info_node.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
#ifndef M2_CHAR_INFO_NODE_H
#define M2_CHAR_INFO_NODE_H
#include <stdio.h>
#include <malloc.h>
#include <ctype.h>
#include <string.h>
#include "hct_node.h"
#define MAX_CHARACTERS 128
typedef struct CharInfoNode {
char character;
int frequency;
char* huffmanCode;
} CharInfoNode;
CharInfoNode* createCharInfoNodeDictionary();
void calculateCharFreqs(const char text[], CharInfoNode* pCharInfoNodeDictionary);
int compareCharFreqs(const void* pVoidFirstCharInfoNode, const void* pVoidSecondCharInfoNode);
void sortCharFreqs(CharInfoNode* pCharInfoNodeDictionary);
void assignHuffmanCodes(HCTNode* pHCTNode, CharInfoNode* pCharInfoNodeDictionary, char* huffmanCodeBuffer, int huffmanCodeLength);
void encodeText(const char text[], CharInfoNode* pCharInfoNodeDictionary);
void destroyCharInfoDictionary(CharInfoNode* pCharInfoNodeDictionary);
void printCharInfoDictionary(CharInfoNode* pCharInfoNodeDictionary);
#endif //M2_CHAR_INFO_NODE_H