Huffman coding in C
Copyright (c) 2013 the authors listed at the following URL, and/or
the authors of referenced articles or incorporated external code:
http://en.literateprograms.org/Huffman_coding_(C_Plus_Plus)?action=history&offset=20090129100015
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Retrieved from: http://en.literateprograms.org/Huffman_coding_(C_Plus_Plus)?oldid=16057
huffpack enwik9
size: 256, symbols: 206
9: 100101001111111
10: 010100
32: 101
33: 1001111100111
34: 10001011110
35: 10010100101
36: 010000011101
37: 1000101110
38: 11011111
39: 1001101
40: 110111100
41: 110111101
42: 110100111
43: 10010100110101
44: 1001000
45: 01011011
46: 1101000
47: 11110111
48: 0000010
49: 0000011
50: 10011110
51: 00000001
52: 111101000
53: 111101001
54: 100111011
55: 100100101
56: 100111111
57: 01010101
58: 01011010
59: 0100001
60: 11110110
61: 10010101
62: 11110101
63: 0100000110110
64: 00000000101100000
65: 01010100
66: 100100100
67: 10001010
68: 010101100
69: 010000010
70: 000000111
71: 000000101
72: 010000001
73: 100111000
74: 1000101101
75: 0000001100
76: 010000000
77: 100111010
78: 000000100
79: 1000101100
80: 100101000
81: 1001010010001
82: 010101101
83: 10001000
84: 01010111
85: 1001111101
86: 10011111000
87: 000000000
88: 1000100100100
89: 100101001110
90: 01000001100
91: 111000
92: 1001010011000
93: 111001
94: 010000011110000
95: 10001011111
96: 1000100100110000111
97: 0110
98: 1001011
99: 111100
100: 00001
101: 1100
102: 010001
103: 010111
104: 01001
105: 0011
106: 0000001101
107: 10010011
108: 10000
109: 110101
110: 0001
111: 0010
112: 100011
113: 110100110
114: 11111
115: 11101
116: 0111
117: 110110
118: 0101100
119: 1001100
120: 100111001
121: 1101110
122: 1000100111
123: 1000100101
124: 11010010
125: 1000100110
126: 1001010011011101
128: 1001010011110
129: 01000001111101
130: 0000000011100
131: 1001010011001
132: 100010010011100
133: 010000011010100
134: 000000001101001
135: 000000001101000
136: 010000011110011
137: 010000011010000
138: 1001010011010000
139: 1001010011011000
140: 000000001101100
141: 010000011111000
142: 0000000010110001
143: 1001010010011011
144: 010000011110010
145: 000000001010101
146: 1001010010011001
147: 00000000101111
148: 00000000111111
149: 100101001001110
150: 000000001010010
151: 000000001010100
152: 010000011010001
153: 10010100100000
154: 0100000111000011
155: 1001111100101001
156: 100101001111110
157: 010000011110001
158: 000000001010011
159: 000000001110111
160: 100010010010101
161: 10010100111110
162: 000000001110110
163: 100010010011101
164: 10001001001101
165: 010000011100000
166: 010000011010111
167: 00000000101110
168: 00000000110101
169: 1001010010010
170: 100010010010100
171: 010000011111001
172: 1001010010011010
173: 01000001101001
174: 000000001011001
175: 000000001111100
176: 10011111001011
177: 100101001101111
178: 00000000111010
179: 10001001001111
180: 100101001101101
181: 00000000110111
182: 100111110010101
183: 010000011010101
184: 0100000111001
185: 00000000101000
186: 00000000110001
187: 00000000101011
188: 10010100100001
189: 00000000111101
190: 00000000111100
191: 000000001111101
194: 01000001101110
195: 10001001000
196: 00000000101101
197: 01000001110001
198: 10001001001100000111
199: 1000100100110000110
200: 1000100100110000011000
201: 10010100110111001
202: 00000000101100001
203: 100101001101110000
204: 010000011100001000
205: 1000100100110000011001
206: 01000001101111
207: 000000001101101
208: 00000000100
209: 0100000111111
210: 100101001101110001010
211: 1000100100110000011011
212: 10001001001100000110101
213: 10010100110111000100
214: 100010010011000000
215: 1001111100100
216: 00000000110000
217: 100101001001111
218: 1000100100110000010
219: 010000011100001001
220: 1001010011011100010111
222: 10001001001100000110100
224: 0000000011001
225: 100010010011001
226: 0100000111101
227: 1001111100110
228: 1001010010011000
229: 10001001001011
230: 100101001101001
231: 010000011010110
232: 1001111100101000
233: 1001010011011001
234: 100010010011000010
235: 1000100100110001
236: 1001010011010001
237: 01000001110000101
238: 10010100110111000101101
239: 1001010011011100011
240: 10010100110111000101100
\-root
|-Bit0
| |-Bit0
| | |-Bit0
| | | |-Bit0
| | | | |-Bit0
| | | | | |-Bit0
| | | | | | |-Bit0
| | | | | | | |-Bit0
| | | | | | | | |-Bit0 = 87
| | | | | | | | \-Bit1
| | | | | | | | |-Bit0
| | | | | | | | | |-Bit0 = 208
| | | | | | | | | \-Bit1
| | | | | | | | | |-Bit0
| | | | | | | | | | |-Bit0
| | | | | | | | | | | |-Bit0 = 185
| | | | | | | | | | | \-Bit1
| | | | | | | | | | | |-Bit0 = 150
| | | | | | | | | | | \-Bit1 = 158
| | | | | | | | | | \-Bit1
| | | | | | | | | | |-Bit0
| | | | | | | | | | | |-Bit0 = 151
| | | | | | | | | | | \-Bit1 = 145
| | | | | | | | | | \-Bit1 = 187
| | | | | | | | | \-Bit1
| | | | | | | | | |-Bit0
| | | | | | | | | | |-Bit0
| | | | | | | | | | | |-Bit0
| | | | | | | | | | | | |-Bit0
| | | | | | | | | | | | | |-Bit0 = 64
| | | | | | | | | | | | | \-Bit1 = 202
| | | | | | | | | | | | \-Bit1 = 142
| | | | | | | | | | | \-Bit1 = 174
| | | | | | | | | | \-Bit1 = 196
| | | | | | | | | \-Bit1
| | | | | | | | | |-Bit0 = 167
| | | | | | | | | \-Bit1 = 147
| | | | | | | | \-Bit1
| | | | | | | | |-Bit0
| | | | | | | | | |-Bit0
| | | | | | | | | | |-Bit0
| | | | | | | | | | | |-Bit0 = 216
| | | | | | | | | | | \-Bit1 = 186
| | | | | | | | | | \-Bit1 = 224
| | | | | | | | | \-Bit1
| | | | | | | | | |-Bit0
| | | | | | | | | | |-Bit0
| | | | | | | | | | | |-Bit0 = 135
| | | | | | | | | | | \-Bit1 = 134
| | | | | | | | | | \-Bit1 = 168
| | | | | | | | | \-Bit1
| | | | | | | | | |-Bit0
| | | | | | | | | | |-Bit0 = 140
| | | | | | | | | | \-Bit1 = 207
| | | | | | | | | \-Bit1 = 181
| | | | | | | | \-Bit1
| | | | | | | | |-Bit0
| | | | | | | | | |-Bit0 = 130
| | | | | | | | | \-Bit1
| | | | | | | | | |-Bit0 = 178
| | | | | | | | | \-Bit1
| | | | | | | | | |-Bit0 = 162
| | | | | | | | | \-Bit1 = 159
| | | | | | | | \-Bit1
| | | | | | | | |-Bit0
| | | | | | | | | |-Bit0 = 190
| | | | | | | | | \-Bit1 = 189
| | | | | | | | \-Bit1
| | | | | | | | |-Bit0
| | | | | | | | | |-Bit0 = 175
| | | | | | | | | \-Bit1 = 191
| | | | | | | | \-Bit1 = 148
| | | | | | | \-Bit1 = 51
| | | | | | \-Bit1
| | | | | | |-Bit0
| | | | | | | |-Bit0 = 78
| | | | | | | \-Bit1 = 71
| | | | | | \-Bit1
| | | | | | |-Bit0
| | | | | | | |-Bit0 = 75
| | | | | | | \-Bit1 = 106
| | | | | | \-Bit1 = 70
| | | | | \-Bit1
| | | | | |-Bit0 = 48
| | | | | \-Bit1 = 49
| | | | \-Bit1 = 100
| | | \-Bit1 = 110
| | \-Bit1
| | |-Bit0 = 111
| | \-Bit1 = 105
| \-Bit1
| |-Bit0
| | |-Bit0
| | | |-Bit0
| | | | |-Bit0
| | | | | |-Bit0
| | | | | | |-Bit0
| | | | | | | |-Bit0 = 76
| | | | | | | \-Bit1 = 72
| | | | | | \-Bit1
| | | | | | |-Bit0 = 69
| | | | | | \-Bit1
| | | | | | |-Bit0
| | | | | | | |-Bit0 = 90
| | | | | | | \-Bit1
| | | | | | | |-Bit0
| | | | | | | | |-Bit0
| | | | | | | | | |-Bit0
| | | | | | | | | | |-Bit0 = 137
| | | | | | | | | | \-Bit1 = 152
| | | | | | | | | \-Bit1 = 173
| | | | | | | | \-Bit1
| | | | | | | | |-Bit0
| | | | | | | | | |-Bit0 = 133
| | | | | | | | | \-Bit1 = 183
| | | | | | | | \-Bit1
| | | | | | | | |-Bit0 = 231
| | | | | | | | \-Bit1 = 166
| | | | | | | \-Bit1
| | | | | | | |-Bit0 = 63
| | | | | | | \-Bit1
| | | | | | | |-Bit0 = 194
| | | | | | | \-Bit1 = 206
| | | | | | \-Bit1
| | | | | | |-Bit0
| | | | | | | |-Bit0
| | | | | | | | |-Bit0
| | | | | | | | | |-Bit0
| | | | | | | | | | |-Bit0 = 165
| | | | | | | | | | \-Bit1
| | | | | | | | | | |-Bit0
| | | | | | | | | | | |-Bit0
| | | | | | | | | | | | |-Bit0 = 204
| | | | | | | | | | | | \-Bit1 = 219
| | | | | | | | | | | \-Bit1 = 237
| | | | | | | | | | \-Bit1 = 154
| | | | | | | | | \-Bit1 = 197
| | | | | | | | \-Bit1 = 184
| | | | | | | \-Bit1 = 36
| | | | | | \-Bit1
| | | | | | |-Bit0
| | | | | | | |-Bit0
| | | | | | | | |-Bit0
| | | | | | | | | |-Bit0 = 94
| | | | | | | | | \-Bit1 = 157
| | | | | | | | \-Bit1
| | | | | | | | |-Bit0 = 144
| | | | | | | | \-Bit1 = 136
| | | | | | | \-Bit1 = 226
| | | | | | \-Bit1
| | | | | | |-Bit0
| | | | | | | |-Bit0
| | | | | | | | |-Bit0 = 141
| | | | | | | | \-Bit1 = 171
| | | | | | | \-Bit1 = 129
| | | | | | \-Bit1 = 209
| | | | | \-Bit1 = 59
| | | | \-Bit1 = 102
| | | \-Bit1 = 104
| | \-Bit1
| | |-Bit0
| | | |-Bit0 = 10
| | | \-Bit1
| | | |-Bit0
| | | | |-Bit0 = 65
| | | | \-Bit1 = 57
| | | \-Bit1
| | | |-Bit0
| | | | |-Bit0 = 68
| | | | \-Bit1 = 82
| | | \-Bit1 = 84
| | \-Bit1
| | |-Bit0
| | | |-Bit0 = 118
| | | \-Bit1
| | | |-Bit0 = 58
| | | \-Bit1 = 45
| | \-Bit1 = 103
| \-Bit1
| |-Bit0 = 97
| \-Bit1 = 116
\-Bit1
|-Bit0
| |-Bit0
| | |-Bit0
| | | |-Bit0 = 108
| | | \-Bit1
| | | |-Bit0
| | | | |-Bit0
| | | | | |-Bit0 = 83
| | | | | \-Bit1
| | | | | |-Bit0
| | | | | | |-Bit0
| | | | | | | |-Bit0 = 195
| | | | | | | \-Bit1
| | | | | | | |-Bit0
| | | | | | | | |-Bit0 = 88
| | | | | | | | \-Bit1
| | | | | | | | |-Bit0
| | | | | | | | | |-Bit0 = 170
| | | | | | | | | \-Bit1 = 160
| | | | | | | | \-Bit1 = 229
| | | | | | | \-Bit1
| | | | | | | |-Bit0
| | | | | | | | |-Bit0
| | | | | | | | | |-Bit0
| | | | | | | | | | |-Bit0
| | | | | | | | | | | |-Bit0
| | | | | | | | | | | | |-Bit0 = 214
| | | | | | | | | | | | \-Bit1
| | | | | | | | | | | | |-Bit0 = 218
| | | | | | | | | | | | \-Bit1
| | | | | | | | | | | | |-Bit0
| | | | | | | | | | | | | |-Bit0
| | | | | | | | | | | | | | |-Bit0 = 200
| | | | | | | | | | | | | | \-Bit1 = 205
| | | | | | | | | | | | | \-Bit1
| | | | | | | | | | | | | |-Bit0
| | | | | | | | | | | | | | |-Bit0 = 222
| | | | | | | | | | | | | | \-Bit1 = 212
| | | | | | | | | | | | | \-Bit1 = 211
| | | | | | | | | | | | \-Bit1 = 198
| | | | | | | | | | | \-Bit1
| | | | | | | | | | | |-Bit0 = 234
| | | | | | | | | | | \-Bit1
| | | | | | | | | | | |-Bit0 = 199
| | | | | | | | | | | \-Bit1 = 96
| | | | | | | | | | \-Bit1 = 235
| | | | | | | | | \-Bit1 = 225
| | | | | | | | \-Bit1 = 164
| | | | | | | \-Bit1
| | | | | | | |-Bit0
| | | | | | | | |-Bit0 = 132
| | | | | | | | \-Bit1 = 163
| | | | | | | \-Bit1 = 179
| | | | | | \-Bit1 = 123
| | | | | \-Bit1
| | | | | |-Bit0 = 125
| | | | | \-Bit1 = 122
| | | | \-Bit1
| | | | |-Bit0 = 67
| | | | \-Bit1
| | | | |-Bit0
| | | | | |-Bit0 = 79
| | | | | \-Bit1 = 74
| | | | \-Bit1
| | | | |-Bit0 = 37
| | | | \-Bit1
| | | | |-Bit0 = 34
| | | | \-Bit1 = 95
| | | \-Bit1 = 112
| | \-Bit1
| | |-Bit0
| | | |-Bit0
| | | | |-Bit0 = 44
| | | | \-Bit1
| | | | |-Bit0
| | | | | |-Bit0 = 66
| | | | | \-Bit1 = 55
| | | | \-Bit1 = 107
| | | \-Bit1
| | | |-Bit0
| | | | |-Bit0
| | | | | |-Bit0 = 80
| | | | | \-Bit1
| | | | | |-Bit0
| | | | | | |-Bit0
| | | | | | | |-Bit0
| | | | | | | | |-Bit0
| | | | | | | | | |-Bit0 = 153
| | | | | | | | | \-Bit1 = 188
| | | | | | | | \-Bit1 = 81
| | | | | | | \-Bit1
| | | | | | | |-Bit0 = 169
| | | | | | | \-Bit1
| | | | | | | |-Bit0
| | | | | | | | |-Bit0
| | | | | | | | | |-Bit0 = 228
| | | | | | | | | \-Bit1 = 146
| | | | | | | | \-Bit1
| | | | | | | | |-Bit0 = 172
| | | | | | | | \-Bit1 = 143
| | | | | | | \-Bit1
| | | | | | | |-Bit0 = 149
| | | | | | | \-Bit1 = 217
| | | | | | \-Bit1 = 35
| | | | | \-Bit1
| | | | | |-Bit0
| | | | | | |-Bit0
| | | | | | | |-Bit0 = 92
| | | | | | | \-Bit1 = 131
| | | | | | \-Bit1
| | | | | | |-Bit0
| | | | | | | |-Bit0
| | | | | | | | |-Bit0
| | | | | | | | | |-Bit0 = 138
| | | | | | | | | \-Bit1 = 236
| | | | | | | | \-Bit1 = 230
| | | | | | | \-Bit1 = 43
| | | | | | \-Bit1
| | | | | | |-Bit0
| | | | | | | |-Bit0
| | | | | | | | |-Bit0 = 139
| | | | | | | | \-Bit1 = 233
| | | | | | | \-Bit1 = 180
| | | | | | \-Bit1
| | | | | | |-Bit0
| | | | | | | |-Bit0
| | | | | | | | |-Bit0
| | | | | | | | | |-Bit0 = 203
| | | | | | | | | \-Bit1
| | | | | | | | | |-Bit0
| | | | | | | | | | |-Bit0 = 213
| | | | | | | | | | \-Bit1
| | | | | | | | | | |-Bit0 = 210
| | | | | | | | | | \-Bit1
| | | | | | | | | | |-Bit0
| | | | | | | | | | | |-Bit0 = 240
| | | | | | | | | | | \-Bit1 = 238
| | | | | | | | | | \-Bit1 = 220
| | | | | | | | | \-Bit1 = 239
| | | | | | | | \-Bit1 = 201
| | | | | | | \-Bit1 = 126
| | | | | | \-Bit1 = 177
| | | | | \-Bit1
| | | | | |-Bit0 = 89
| | | | | \-Bit1
| | | | | |-Bit0 = 128
| | | | | \-Bit1
| | | | | |-Bit0 = 161
| | | | | \-Bit1
| | | | | |-Bit0 = 156
| | | | | \-Bit1 = 9
| | | | \-Bit1 = 61
| | | \-Bit1 = 98
| | \-Bit1
| | |-Bit0
| | | |-Bit0 = 119
| | | \-Bit1 = 39
| | \-Bit1
| | |-Bit0
| | | |-Bit0
| | | | |-Bit0 = 73
| | | | \-Bit1 = 120
| | | \-Bit1
| | | |-Bit0 = 77
| | | \-Bit1 = 54
| | \-Bit1
| | |-Bit0 = 50
| | \-Bit1
| | |-Bit0
| | | |-Bit0
| | | | |-Bit0 = 86
| | | | \-Bit1
| | | | |-Bit0
| | | | | |-Bit0 = 215
| | | | | \-Bit1
| | | | | |-Bit0
| | | | | | |-Bit0
| | | | | | | |-Bit0 = 232
| | | | | | | \-Bit1 = 155
| | | | | | \-Bit1 = 182
| | | | | \-Bit1 = 176
| | | | \-Bit1
| | | | |-Bit0 = 227
| | | | \-Bit1 = 33
| | | \-Bit1 = 85
| | \-Bit1 = 56
| \-Bit1 = 32
\-Bit1
|-Bit0
| |-Bit0 = 101
| \-Bit1
| |-Bit0
| | |-Bit0
| | | |-Bit0 = 46
| | | \-Bit1
| | | |-Bit0 = 124
| | | \-Bit1
| | | |-Bit0 = 113
| | | \-Bit1 = 42
| | \-Bit1 = 109
| \-Bit1
| |-Bit0 = 117
| \-Bit1
| |-Bit0 = 121
| \-Bit1
| |-Bit0
| | |-Bit0 = 40
| | \-Bit1 = 41
| \-Bit1 = 38
\-Bit1
|-Bit0
| |-Bit0
| | |-Bit0 = 91
| | \-Bit1 = 93
| \-Bit1 = 115
\-Bit1
|-Bit0
| |-Bit0 = 99
| \-Bit1
| |-Bit0
| | |-Bit0
| | | |-Bit0 = 52
| | | \-Bit1 = 53
| | \-Bit1 = 62
| \-Bit1
| |-Bit0 = 60
| \-Bit1 = 47
\-Bit1 = 114
tree bits: 2059
compressed: 1000000000 -> 648369477 bytes