| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1813 人关注过本帖
标题:哈夫曼压缩程序程序。。
取消只看楼主 加入收藏
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
结帖率:95.74%
收藏
已结贴  问题点数:100 回复次数:8 
哈夫曼压缩程序程序。。
我的这个程序都在测试。。。没有写完。。没有编码和解码没有分开。。这样是我还没有把编码表写进文件。。
附件里面含有很多测试语句。。。。。。
如果你有时间就帮我解惑吧。。我找了还好久还是没有找出来有点郁闷。。。
貌似英文的时候问题出现的概率很少。貌似字符一多就会出现未知数据。。。
中文的时候有时候可以 有时候不可以。。。
纠结中,在不停的调错误。。。。
希望你帮我找找。。看我哪里有逻辑错误。。。
thank you!!!!!
myHuffTree.zip (213.29 KB)
搜索更多相关主题的帖子: 测试 中文 
2011-11-07 12:00
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:0 
回复 2楼 绿茶盖儿
没必要看我的。。。我这里有源代码。网上的比较好的。。
但我发现他们有解码的时候,是查表。。扫描的方式。。觉得速度太慢了。。
所以我自己写的不同。。现在还在排除错误。。。
做数据结构那样的哈夫曼的树 还是很好建。。
但要真正用于实际
许多细节要注意。。。
现在我就在一些细节没有注意到 出了问题。。
排除了几个错误了,不过花了我一个下午了。。。
唉。。。。。。。。。。。。。。。。。。。。。


你要源代码 我这里有。。。蛮好的 注释写的比较多

用心做一件事情就这么简单
2011-11-07 17:16
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:0 
回复 4楼 Sv少
如果单纯的做那个数据结构的题目。还是很简单的。。。
直接有内存里面的树,然后有一个数组保存哈夫曼编码。逐步的比较进行解码就OK了。。。。
如果要想做成压缩包一样类似的程序,就要运用到文件的知识。。什么进制转换。什么文件读取,写入 。。。注意的东西就多了。。。。。
但思路蛮简单的。。。。。
自己调试了8个小时  。。
想死了。。。。。。。。。。。。。。。

用心做一件事情就这么简单
2011-11-08 10:02
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:0 
回复 6楼 枯叶蝴蝶
这个吗!!我也才学习树没有好久啊。
反正只要指针学明白。。。这些都比较好写啊。。。。
改了几个错误了。。。
貌似发现读英文100%可以了。。
但读中文,出现了问题。。
经过我调试我发现哈夫曼码值都有问题。。。
看来还需要排查里面的东西。。。
你说 要是树都错的,那么英文可以,为什么中文就错的。。
看来真的是蛋疼啊

用心做一件事情就这么简单
2011-11-08 12:38
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:0 
回复 9楼 beyondyf
程序的思路已经把握了。源代码我也有。。。
如果按照源代码的思维去写还是很简单。。
自己觉得他写的不是太好。。自己改了一些东西。。一些处理。。
结果是 出现BUG 了。。、
在调试中。。。嘿嘿。。。。

用心做一件事情就这么简单
2011-11-09 14:25
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:0 
回复 11楼 jcw08120110
嘿嘿,果断地重新写这个程序,把每个地方都重新验证是否正确。。。竟然发现我自己的编码都好像有错误了。。。
不在调了。。

思路:根据长度的位来表示字符,从而进行压缩。。。

1:根据待压缩的文件内容先构建哈弗曼树。
2:然后把每个字符的编码求出来。。
3:然后进行核心的地方 把待压缩的文件内容转换为8位的一个字符 进行压缩。然后写入文件。
4: 然后还要写入一些别的信息到文件中。。。
5.解码就是反方向了。。。。
思路还是蛮简单。。。
主要是文件的处理的细节有点问题。。
比如:
文本 abcdf
fgetc 和fread();有点区别。。。
unsigend char c;
while(!feof())
{
  c=fgetc("文件指针");
  putchar(c);
}
和下面
while(!feof())
{
  fread(&c,1,1,文件指针);
  putchar(c);
}
上面能够正常读出abcdf来但会读一个回车还是什么的特殊符号。。。
下面会读出absdff 多出一个字符来。。
这样权值就会出现差别。。。
----------

用心做一件事情就这么简单
2011-11-09 20:32
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:0 
回复 13楼 faminxmu
但我发现你的压缩后的文件比你原来的文件还要大。。
而且解压解不出来。。
取消的健没有用。。

用心做一件事情就这么简单
2011-11-10 19:12
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:0 

我来把我到网上找的写的比较好的源代码共享出来。。。
看看他们的。。。。
一个是c++ 一个c的
利用哈夫曼编码实现文件压缩.zip (25.5 KB)

用心做一件事情就这么简单
2011-11-10 19:14
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:0 
分享数据结构书籍 感谢大家帮忙。。。。。。
https://bbs.bccn.net/viewthread.php?tid=354886&extra=page%3D1&frombbs=1
后天要考程序员,我书才看。。原来要考那么多。。我勒个去。。有点压力啊。。。

用心做一件事情就这么简单
2011-11-10 19:56
快速回复:哈夫曼压缩程序程序。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019492 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved