哈弗曼编码与译码的问题

下周的课程设计,我选择的这个题目,具体的实现应该不是问题,一个下午就搞定了,但是程序只是实现了基本的编码与译码的功能,

文件的压缩还是没有做好,我想这应该是在位操作那块的问题。。。

如果单从编码与译码的角度说,马上就可以验收了,但是感觉还是不够完善,期待在写入后者其他的方面有些与众不同的地方。

 

在调试程序的时候犯下的错误汇总:

1:文件在之前打开后没有关闭,再次打开会失败的,比较隐蔽的问题,所以,在进行文件操作的时候,应该养成当文件操作完毕后立即

关闭的习惯

 

2:圣诞的早上,终于把文件压缩的功能实现了,原理其实就是将所有的编码串用 bit  来存,这样就能节省一些空间了,

我用的方法和网上的比太一样,我先是把编码通过字符串合并到一起,组成一个字符串,这个字符串就代表了文件中的内容,

然后将他们转换成 bit ,8位作为一组,写入压缩文件,这样同样能够达到压缩的目的。。。

 

3:12月28号:本以为程序已经完成,可是在上机的时候和同学交流的时候发现,自己程序的健壮性是不错的,但是,在设计之初,有些问题没有下好,造成了一些使用上的不便,主要的问题在于,我没有将编码器与译码器的数据有效的隔离,导致了两者的有些莲藕性,

对于面向对象的程序设计思想,领悟的还是不够好,不过,这个问题很小,回到寝室,我马上的搞定了。。。

 

4: 12月28号 :将界面写好后,重新调试程序时,发现了一个问题,那就是在编码结束后,译码会产生错误,经过调试发现,程序

在建立二叉树树,一个结构的指针由于在编码建树的过程中的运动,导致在译码的时候,不能正确的指向开始的位置发现这样的问题,

基本上,我就能猜到应该是数据的问题了,只需要重新定位指针的位置就可以解决了,当然也可以通过写一个函数来处理所有的数据,

看起来像是构造函数的事情了。。。

 

这么看,我还是挺强大的。。。O(∩_∩)O哈哈~。。。

现在将编码器与译码器分开使用同样不会有问题,基本上对所有的测试数据都能通过的。。。

只是在于压缩上,不是非常完美,今天下午遇到的问题是:我本以为,我可以不需要重建二叉树,就能达到译码,但是在读取文件的时候,老是不能将之前写入的编码序列读出来,可能是写入的问题,之前采取的方法,不通过重建二叉树同样能实现,但是,这是因为他们二者有数据

上的共享造成的,经过我的测试,只要重新初始化存储编码的结构,在译码时就不能读出之前写入的编码,也就不能完成译码了。。。

针对上边的情况,我还是采取了比较常规的做法,重建二叉树,完成了译码功能。。。

 

今天的验收,一切都是那么的顺利,几乎没有什么提问,一直是我牵着老师的鼻子走,感觉就是这样的,如果这个东西完全是你自己做的,

你一定会从中得到收获,并且会遇到问题,如果你能把问题独立解决它们,那么你根本不会在乎老师问你什么,那些技术细节,你一定会知道的。。。

更何况老师其实也不是每个都很负责。。。

就在昨天,补交linux 实验的时候,问了那老师一个问题,现在想想,那老师真的不咋地。。。

上那课几乎就是浪费时间,都不知道他上课在讲什么东西。。

居然连过滤驱动都没听说过,真是让人很失望,而且摆出一副恶心的样子,让人讨厌。。。

我想:这更坚定了我的选择。。

 

完。。。。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值