20160430 编码

楼主: htx9 (蚂蚁)   2016-04-30 20:35:52
这星期在写霍夫曼编码(怎么霍常打成难?),是大二资料结构其中一个作业。
当初写了很久弄不出来,眼看已经过了交件期限了,后来跑去找助教求助,
助教说在考试前写出来就好了,幸好最后是写出来了。
这次再尝试写霍夫曼编码,当初不晓得作业内容是不是有包括解码的部分。
建构霍夫曼树和编码的部分还算容易,比较觉得麻烦在于解码的部分。
编码后将各字母和其频率等档头资料和压缩后的资料输出成文字档,
后来发现有问题(使用c语言fputc输出'\n',会同时输出'\r',造成档案解码错误),
再来就是判断档案结尾的部分,因为压缩后的资料可能会包含0xff,
如果用EOF常数或feof函数来判断可能会出问题,最后用懒人法,
先计算出压缩码部分的长度用来做档案结尾的判断比较不会有问题。
个人读档用的是fgetc函数而不是fread,所以可能会有比较多的问题。
当初选用c语言写,也是因为当时作业也是用c语言下去写,来体会一下当时的心境。
碰到一些问题,有关解码失败的bug,找了三天才把bug解掉。
解码的部分也是也读取档头(字母和其频率),重建霍夫曼树,
然后根据压缩码走访霍夫曼树并解码。
总之最后写出来的感觉很踏实,好像稍微重拾了当初写程式的热情。
接下来再给自己一个功课下去研究吧。
好好加油!!!

Links booklink

Contact Us: admin [ a t ] ucptt.com