ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:45.10KB ,
资源ID:17453414      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17453414.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(哈夫曼编码报告Word文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

哈夫曼编码报告Word文档格式.docx

1、完成程序的主框架设计,进行调试,验证其正确性;第2次:详细设计,进行调试,验证其正确性;第3次:进行整体调试,运行程序,对运行结果进行分析,完成实验报告。#includestring.hmalloc.h#define MAXWORD 100typedef struct unsigned int weight;char data; unsigned int parent,llchild,rrchild; HTNode,*HuffmanTree; /动态分配数组存储哈夫曼树 typedef char * *HuffmanCode; / /动态分配数组存储哈夫曼编码表typedef struct t

2、node char ch; /字符 int count; /出现次数 struct tnode *lchild,*rchild;BTree,*BT;int a=0,b=0;int sMAXWORD;char strMAXWORD;void main() int n;int i=0; HuffmanTree HT;HuffmanCode HC; void HuffmanCoding(HuffmanTree &HT,HuffmanCode &HC,int n); void DispHCode(HuffmanTree HT,HuffmanCode HC,int n); void Creatree(B

3、T &p,char c); /Creatree()和InOrderTraverse() void InOrderTraverse(BT p); /利用二叉树统计出现的字符及个数 void TTranChar(HuffmanTree HT,HuffmanCode HC,int n); void Tran(HuffmanTree HT,int n); printf(请输入要用几种字符:); scanf(%d,&n); BT root=NULL;n请输入字符串:%s,str); while(stri!=0) Creatree(root,stri);i+;字符及出现次数: InOrderTravers

4、e(root); HuffmanCoding(HT,HC,n); DispHCode(HT,HC,n); Tran(HT,n);TTranChar(HT,HC,n);void HuffmanCoding(HuffmanTree &HC,int n) / w放n个权值,构造赫夫曼树HT,n个字符编码HC void select(HuffmanTree t,int i,int &s1,int &s2); int m,i,s1,s2,start;char *cd;unsigned c,f; HuffmanTree p; if(n=1) return; m=2*n-1; HT=(HuffmanTree

5、)malloc(m+1)*sizeof(HTNode); for(p=HT+1,i=1;is2) j=s1; s1=s2; s2=j;int min(HuffmanTree t,int i) / 函数void select()调用 int j,flag; unsigned int k=100; / 取k比任何权值都大 for(j=1;j=i;j+) if(tj.weightch=c;count=1;lchild=p-rchild=NULL;else if(c=p-ch) p-count+; if(clchild,c); else Creatree(p-rchild,c);void InOrde

6、rTraverse(BT p) /中序遍历 if(p!=NULL) InOrderTraverse(p-lchild); printf(%c的个数为:%dn,p-ch,p-count); sb=p-count;b+; stra=p-ch;a+; InOrderTraverse(p-rchild);void DispHCode(HuffmanTree HT,HuffmanCode HC,int n) /显示0、1编码int i;输出哈夫曼编码: printf(%c:t,HTi.data); puts(HCi);void Tran(HuffmanTree HT,int n) /将含0、1的编码翻译

7、成字符 int i,j=0; char ccMAXWORD; i=2*n-1;输入发送的(0、1)编码(以#为结束标志):,cc);译码后的字符为 while(ccj! if(ccj= i=HTi.llchild; i=HTi.rrchild; if(HTi.llchild=0) %ci=2*n-1; j+;void TTranChar(HuffmanTree HT,HuffmanCode HC,int n) char ss50;int i,j; /将字符串翻译成0、1代码输入字符串:,ss); i=0; while(ssi! j=1; while(HTj.data!=ssi)&(j=n) j

8、+;,HCj); i+;6.实验结果与总结:总结:在实现哈夫曼树编码的过程中,首先构建哈夫曼树,并用动态分配数组存储,也用动态分配数组存储哈夫曼编码表。程序书上虽然有一部分可借鉴的代码,自己只需要编写几个函数即可,但在编写程序时也遇到一些问题,开始统计字符串中出现的各种字符及其次数时,将字母存放数组中,但是考虑到字母出现的不同,完全初始化再统计其出现的个数,不仅占用空间并且时间复杂度高。后来采用二叉树统计出现的字母及个数,实现了输入字母种类的灵活性。通过此次实验,明白了了解数据存储的具体方式的重要性,在这次实验中要实现两个互译码程序,就需要对数据的存储了解,编写时就容易了然于心。总的来说,数据结构实验对我们的编程能力还是有很大的帮助,锻炼我们的逻辑思维、使我们更熟练地使用c语言编程、锻炼我们处理异常的能力。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1