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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构大作业.docx

1、数据结构大作业预习分操作分报告分总成绩实 验 报 告学 号 姓 名 实验名称 哈夫曼编码器设计 指导老师 班 级 实验日期 实验报告具体内容一般应包括:一、实验目的和要求;二、实验原理;三、主要仪器设备(软件);四、实验内容及实验数据记录;五、实验数据处理与分析;六、问题与建议一、实验目的和要求:哈夫曼(Huffman)树与哈夫曼码1输入一个文本,统计各字符出现的频度,输出结果;2使用二叉链表或三叉链表作存储结构,构造哈夫曼(Huffman)树;3确定和输出各字符的哈夫曼码;4. 输入一个由0和1组成的代码序列,翻译并输出与之对应的文本;要求:一个完整的系统应具有以下功能:(1)初始化: 从终

2、端读入一段英文字符,统计每个字符出现的频率,建立赫夫曼树,并将该树存入某文件;(2)编码: 利用建好的赫夫曼树对各字符进行编码,用列表的形式显示在屏幕上,并将编码结果存入另一文件中; (3)解码:利用保存的赫夫曼编码,对任意输入的0,1序列能正确解码二、实验思路:对输入的一串字符串,用循环进行出现频率的统计,出现频率即为节点的权值。为了方便将叶子节点数定义成为全局变量。创建哈夫曼树时,先给哈夫曼树创建一个节点,依次对叶子节点和非叶子节点进行初始化。将全部的叶子节点中最小权值的两个节点的权值进行相加即为非叶子节点。进行哈夫曼编码时,从叶子节点到根节点进行编码。而进行解码时,是从根节点到叶子节点,

3、向左为0向右为1。由于书上有相关代码,一部分代码直接借用。三、实验代码:#define MAX 50typedef struct int weight; int parent,lchild,rchild;HTNode,*HuffmanTree;typedef char *HuffmanCode;int n; /叶子结点数char aMAX; /接受字符串的数组void select(HuffmanTree *ht,int i,int *s1,int *s2) int j=1; for(j=1;j=i;j+) if(*ht)j.parent=0) *s1=j;break; for(j=1;j=i

4、;j+) if(j=*s1) continue; else if(*ht)j.parent=0) *s2=j;break; for(j=1;j=i;j+) /选择两个最小权值的结点 if(*ht)j.weight(*ht)*s1.weight&(*ht)j.parent=0&(*ht)*s1.weight!=(*ht)*s2.weight) *s1=j; for(j=1;j=i;j+) if(j=*s1) continue; else if(*ht)j.weight(*ht)*s2.weight&(*ht)j.parent=0) *s2=j; void Creattree(HuffmanTre

5、e *ht,HuffmanCode *hc,int *w) int m,i,s1,s2; m=2*n-1; *ht=(HuffmanTree)malloc(m+1)*sizeof(HTNode); printf(Haffmantree:n); for (i=1;i=n;i+) /数组Huffnode 初始化 (*ht)i.weight=wi; (*ht)i.parent=0; (*ht)i.lchild=0; (*ht)i.rchild=0; for(i=n+1;i=m;i+) (*ht)i.weight=0; (*ht)i.parent=0; (*ht)i.lchild=0; (*ht)i.

6、rchild=0; for(i=n+1;i=m;i+) /建立非叶子结点,Huffmantree select(ht,i-1,&s1,&s2); (*ht)s1.parent=i; (*ht)s2.parent=i; if(*ht)s1.weight(*ht)s2.weight) (*ht)i.lchild=s1; (*ht)i.rchild=s2; else (*ht)i.lchild=s1; (*ht)i.rchild=s2; (*ht)i.weight=(*ht)s1.weight+(*ht)s2.weight; printf(%d=n,(*ht)i.weight,(*ht)s1.wei

7、ght,(*ht)s2.weight); void charge(int *w) printf(put in a stringn); scanf(%s,&a); int i,j,k=1; for(k=1;k=n;k+) wk=1; k=1; for(i=0;ai!=0;i+) if(ai=#) continue; for(j=i+1;aj!=0;j+) if(ai=aj) wk+; aj=#; printf( %c的频数为: ,ai); printf(%dn,wk); k+; void creatnode(HuffmanTree *ht,HuffmanCode *hc) char *cd; i

8、nt i,start,c,p; *hc=(HuffmanCode)malloc(n+1)*sizeof(char *); cd=(char*)malloc(n*sizeof(char); cdn-1=0; printf(haffman编码:n); for(i=1;i=n;i+) start=n-1; for(c=i,p=(*ht)i.parent;p!=0;c=p,p=(*ht)p.parent) if(*ht)p.lchild=c) cd-start=0; else cd-start=1; (*hc)i=(char*)malloc(n-start)*sizeof(char); strcpy(

9、*hc)i,&cdstart); printf(w=%d ,(*ht)i.weight); printf(%sn,(*hc)i); free(cd);void translate(HuffmanTree *ht,int *w) int p; char sMAX; int m,k,i; m=0; printf(请输入一串01代码:n); scanf(%s,s); p=2*n-1; printf(对应的字符为:n); for(i=0;si!=0;i+) if(si=0) p=(*ht)p.lchild; if(si=1) p=(*ht)p.rchild; if(*ht)p.lchild=0&(*h

10、t)p.rchild=0) for(k=1;wk!=(*ht)p.weight;k+) m=m+wk; printf(%c,am); if(si!=0) p=2*n-1;m=0; printf(n);四、实验数据五、实验小结:通过这次试验,我学会了如何进行哈夫曼树的创建,哈弗曼编码以及解码。实验中遇到的问题有:如何统计一个字符串中一个字符出现的次数以及如何将每个字符出现的次数保存;如何将一个数组传入到子函数中,在试验中常常出现数据无法传入子函数中的情况;如何在所有的节点中查找出最小的两个叶子节点;通过这次试验发现自己对子函数的参数的传入,指针的运用十分生疏。C语言的一些内容也有些遗忘。六、流程图Select函数的 流程图:Creattree的函数流程图:Charge的函数流程图:Creatnode的函数流程图:Translate的函数流程图:数据结构实验题目:哈夫曼(Huffman)树与哈夫曼码学 院:专 业:学 号:学生姓名:指导教师:日 期:

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

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