大话数据结构-树(13)


7.7.4 赫夫曼编码数据的解码
在进行赫夫曼编码数据的解码时 , 直接比对编码表即可 , 例如以上数据“111” , 其编码表是:
字母
编码
00
1010
1011
11
01
100
从数据的第一个数值开始 , 取出来与编码表相比较 , 即如下过程:
(1) 取出1 , 无对应字符 , 继续;
(2) 取出10 , 无对应字符 , 继续;
(3) 取出101 , 无对应字符 , 继续;
(4) 取出1010 , 对应字符B , 数据变更为“”;
(5) 继续 , 取出0 , 无对应字符 , 取出00 , 对应字符A , 数据变更为“”;
(6) 继续 , 取出1 , 无对应字符 , 取出11 , 对应字符D , 数据变更为“”;
(7) 继续 , 取出1 , 无对应字符 , 取出10 , 无对应字符 , 取出101 , 无对应字符 , 取出1011 , 对应字符C , 数据变更为“11”;
(8) 继续 , 取出0 , 无对应字符 , 取出00 , 对应字符A , 数据变更为“”;
(9) 取出1 , 无对应字符 , 取出11 , 对应字符D , 数据变更为“”;
(10) 取出1 , 无对应字符 , 取出10 , 无对应字符 , 取出100 , 对应字符F , 数据变更为“”;
(11) 取出0 , 无对应字符 , 取出01 , 对应字符E , 数据变更为“0111”;
(12) 取出0 , 无对应字符 , 取出01 , 对应字符E , 数据变更为“11”;
(13) 取出1 , 无对应字符 , 取出11 , 对应字符D , 数据已解码完成;
(14) 得到最终结果“”;
注:本文为程 杰老师《大话数据结构》的读书笔记 , 其中一些示例和代码是笔者阅读后自行编制的 。