c语言哈夫曼树构造,c语言静态三叉链表构造一棵Huffman树并求其编码

《c语言静态三叉链表构造一棵Huffman树并求其编码》由会员分享,可在线阅读,更多相关《c语言静态三叉链表构造一棵Huffman树并求其编码(14页珍藏版)》请在人人文库网上搜索。

1、课程设计题目:采用静态三叉链表构造一棵Huffman树并求其编码一 课程设计应达到的目的:数据结构课程设计的目的是,为了让学生在学习 数据结构 课程的基础上深入理解数据结构的基本理论,掌握对数据结构的各种操作的算法设计方法,增强对基础知识和基本方法的综合运用能力,增强对算法的理解能力,提高软件设计能力,在实践中培养独立分析问题和解决问题的作风和能力,进一步深入巩固所学理论知识、使理论与实际相结合的重要实践环节。本课程设计通过完成一些具有一定难度的程序的编写、调试、运行工作,掌握面向过程程序设计的基本方法,从而提高学生分析问题解决问题的能力。课程设计是教学中很重要的一项实践环节,它可以帮助学生充。

2、分理解课堂教学中的内容,对提高学生的实践认识和实际动手能力都有很重要的实际意义。学生应在规定的时间内,按照课程设计的要求,结合所学的理论知识,查找相关资料,完成好本次课程设计,提高程序编写的能力,为将来的实际工作取得一定的经验。二 课程设计题目及要求采用静态三叉链表构造一棵Huffman树并求其编码 增加了权值的计算和Huffman树的输出 并写入code文件三 主函数及分析it学习网收集http:/www.itstudy8.net 主程序代码Main.cpp#include#include#includereadFile.h#includeHuffmanTree.hint main()cha。

3、r str1000;cinstr;HuffmanTree htree(str);htree.print();htree.writetoFile();readFile(htree.getstr1(),htree.gethufcodes(),htree.getleafNum();return 0;HuffmanTree.h#include#include#includetemplatestruct TriNodeT data;int parent,left,right; class HuffmanTreeprivate:char str1000; /输入的字符串char str11000; /哈弗。

4、曼叶子值int leafNum; /子叶结点个数TriNode *huftree; / 哈弗曼的结点数组char *hufcodes; /哈弗曼编码数组void createHuffmanTree(int weight,int n); /创建指定权值集合的哈弗曼树void getHuffmanCode(); /获得哈弗曼编码public:HuffmanTree(char str5); HuffmanTree();void writetoFile(); /写入文件char* gethufcodes();char* getstr1();int getleafNum();void print();v。

5、oid print(int u);int getheight(int r);/得出r节点的深度;const Max_Weight=9999; / 默认最大权值/*/HuffmanTree:HuffmanTree(char str5)strcpy(str,str5);int count=0,i,j,k=0;for(i=0;i2*n-1; int i;for(i=0;i#include#includevoid readFile(char *str1,char *hufcodes,int leafNum)/带入参数 哈弗曼节点字符串 哈弗曼编码字符串数组,哈弗曼节点数char str21000,st。

6、r3100;/这个方法的思想是,从文件读入哈弗曼编码过的文档读入到str2中int k=0,i=0,j,l,o=0,p=0;/然后从第一个字符开始取字符str2中的hufcodesi的长度和hufcodesi比较 是否相等FILE *fp;/ 若相等i=i+hufcodesi的长度 继续读下面的 知道str2读完fp=fopen(code.txt,r);while(!feof(fp)str2k+=fgetc(fp);fclose(fp);while(i#include#includevoid readFile(char *str1,char *hufcodes,int leafNum)/带入参。

7、数 哈弗曼节点字符串 哈弗曼编码字符串数组,哈弗曼节点数char str21000,str3100;/这个方法的思想是,从文件读入哈弗曼编码过的文档读入到str2中int k=0,i=0,j,l,o=0,p=0;/然后从第一个字符开始取字符str2中的hufcodesi的长度和hufcodesi比较 是否相等FILE *fp;/ 若相等i=i+hufcodesi的长度 继续读下面的 知道str2读完fp=fopen(code.txt,r);while(!feof(fp)str2k+=fgetc(fp);fclose(fp);while(ik-1)for(j=0;jleafNum;j+)o=0;。

8、p=0;for(l=i;li+strlen(hufcodesj);l+)/复制str2中哈弗曼编码str3p+=str2l;for(l=0;lstrlen(hufcodesj);l+)if(str3l!=hufcodesjl) o+;if(o=0) coutstr1j;i=i+strlen(hufcodesj);break;coutendl;这个方法的思想是,从文件读入哈弗曼编码过的文档读入到str2中 这样此程序又能实现一个功能,增加了程序的实用性。七 课程设计总结、通过此次课程设计,我更加扎实的掌握了有关数据结构方面的知识,在课设过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍。

9、的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手编写,我们掌握的知识不再是纸上谈兵。过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获。

10、喜悦,也永远不可能得到社会及他人对你的认可!课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这短短的一周里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值