c语言静态叉链表构造棵huffman树并求其编码.docVIP

c语言静态叉链表构造棵huffman树并求其编码.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c语言静态叉链表构造棵huffman树并求其编码

课程设计题目: 采用静态三叉链表构造一棵Huffman树并求其编码 一 课程设计应达到的目的: 数据结构课程设计的目的是,为了让学生在学习 《数据结构》 课程的基础上深入理解数据结构的基本理论,掌握对数据结构的各种操作的算法设计方法,增强对基础知识和基本方法的综合运用能力,增强对算法的理解能力,提高软件设计能力,在实践中培养独立分析问题和解决问题的作风和能力,进一步深入巩固所学理论知识、使理论与实际相结合的重要实践环节。本课程设计通过完成一些具有一定难度的程序的编写、调试、运行工作,掌握面向过程程序设计的基本方法,从而提高学生分析问题解决问题的能力。 课程设计是教学中很重要的一项实践环节,它可以帮助学生充分理解课堂教学中的内容,对提高学生的实践认识和实际动手能力都有很重要的实际意义。学生应在规定的时间内,按照课程设计的要求,结合所学的理论知识,查找相关资料,完成好本次课程设计,提高程序编写的能力,为将来的实际工作取得一定的经验。 二 课程设计题目及要求 采用静态三叉链表构造一棵Huffman树并求其编码 增加了权值的计算和Huffman树的输出 并写入code文件 三 主函数及分析 it学习网收集? 主程序代码 Main.cpp #includeiostream.h #includestring.h #includereadFile.h #includeHuffmanTree.h int main() { char str[1000]; cinstr; HuffmanTree htree(str); htree.print(); htree.writetoFile(); readFile(htree.getstr1(),htree.gethufcodes(),htree.getleafNum()); return 0; } HuffmanTree.h #includeiostream.h #includestdio.h #includestring.h templateclass T struct TriNode { T data; int parent,left,right; }; class HuffmanTree { private: char str[1000]; //输入的字符串 char str1[1000]; //哈弗曼叶子值 int leafNum; //子叶结点个数 TriNodeint *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(); void 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;istrlen(str);i++)//循环做出str1,将每个str里面的字符在str1里面扫描一遍,str中在str1没出现的字符放到str1中 { for(j=0;jcount+1;j++) if(str[i]!=str1[j]) k++;//如果str中的字符在str1中扫描不等k++,k初值为0 if(k==count+1)//如果k等于字符串str1的长度的话 说明str[i]在str1中没出现,加到str1中 str1[count++]=str[i]; k=0; } str1[count]=\0;//将哈弗曼叶子字符数组最后一位置字符串结束符 /******

文档评论(0)

panguoxiang + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档