热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

求助:C语言实现哈夫曼树编码与解码系统

最近遇到了一道关于哈夫曼树的编程题目,需要在下午之前完成。题目要求设计一个哈夫曼编码和解码系统,能够反复显示和处理多个项目,直到用户选择退出。希望各位大神能够提供帮助。
### 背景 最近遇到一道关于哈夫曼树的编程题目,需要在下午之前完成。题目要求设计一个哈夫曼编码和解码系统,能够反复显示和处理多个项目,直到用户选择退出。由于时间紧迫,希望各位大神能够提供帮助。 ### 问题描述 设计一个利用哈夫曼算法的编码和译码系统,能够反复显示和处理多个项目,直到用户选择退出。 ### 基本要求 1. 将权值数据存放在数据文件(文件名为`data.txt`,位于执行程序的当前目录中)。 2. 分别采用动态和静态存储结构。 3. 初始化:通过键盘输入字符集大小`n`、`n`个字符和`n`个权值,建立哈夫曼树。 4. 编码:利用建好的哈夫曼树生成哈夫曼编码。 5. 输出编码。 ### 实现要求 - 使用VC6.0实现,做成一个控制台程序即可。 - 不能使用任何MFC扩展动态库,如STL或组件。 - 如果删除数据文件或破坏数据,程序应能检测出这种异常,不能崩溃。 ### 代码示例 ```c #include #include #define MAX 21 struct Huffnode { char data; /* 结点值 */ int weight; /* 权值 */ int parent; /* 父结点 */ int left; /* 左结点 */ int right; /* 右结点 */ }; struct Huffcode { char cd[MAX]; int start; }; Huffnode ht[2 * MAX]; Huffcode hcd[MAX], d; int i, k, f, l, r, n, c, m1, m2; char ch, *menu[] = { "-------------构建哈夫曼树------------", "1.----------添加字符和权值-----------", "2.----------输出哈夫曼编码-----------", "3.----------退出系统-----------------" }; void Enter() { printf("输入元素个数:"); scanf("%d", &n); for (i = 1; i <= n; i++) { getchar(); printf("第%d个元素=>\n\t结点值:", i); scanf("%c", &ht[i].data); printf("\t权重:"); scanf("%d", &ht[i].weight); } for (i = 1; i <= 2 * n - 1; i++) { ht[i].parent = ht[i].left = ht[i].right = 0; } for (i = n + 1; i <= 2 * n - 1; i++) { /* 构造哈夫曼树 */ m1 = m2 = 32767; l = r = 0; /* l和r是最小权重的两个结点位置 */ for (k = 1; k <= i - 1; k++) { if (ht[k].parent == 0) { if (ht[k].weight 3); return s; } void main() { for (;;) { switch (menu_select()) { case 1: Enter(); break; case 2: Display(); break; case 3: exit(0); } } } ``` ### 问题讨论 1. **UP** 2. **UP** 3. 额。。。难道高手都在午休。。。惨了惨了 4. 这个时候来问作业题是否太晚了? 5. 没办法。。。刚才无聊开了下邮箱。。。就看到了,要是下午要的时候才看到更惨 6. just do it~~ 我的资源里有,用MFC做的,没使用扩展库! [链接](http://download.csdn.net/source/403519) 希望有所帮助! 7. 楼主........ 祝你好运了饿~~~~ 8. **UP** 9. 我下下来看了,东西很好,但是能力有限,没搞懂。。。。 10. 汗~~有啥不懂?把里面的枝枝叶叶去掉,拿出来核心代码,放到控制台下,就行了! 11. 不能使用任何MFC扩展动态库,比如STL或者组件。 够bt 12. 就是让我们用单纯的C语言写好像。。。。刚找到一个挺简单的正在研究,如果能用,发上来大家共享下 13. 改天好好研究下你的代码,今天先随便找了个简单的改了改打发一下任务吧,一会研究下怎么把分给你 汗。。。。。。。。。顺便把代码粘上来分享吧,虽然很简单 14. 附上简单代码示例 15. 看不懂 能写详细点吗? 16. 附上另一个代码示例
推荐阅读
author-avatar
Triste夏木_668_365
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有