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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

算法125031郝耀峰实验6.docx

1、算法125031郝耀峰实验6院(系)计算机学院专业软件工程 班级12计科3班姓名郝耀峰学号1250312025同组人无 实验室 S4310 组号日期2014.12.10课程算法设计与分析指导教师宋婉娟成绩实验项目编号06实验项目名 哈夫曼编码算法 1、实验目的掌握贪心法的设计思想,掌握贪心法的执行过程,掌握贪心法的求解过程,熟练掌握求解过程的步骤,掌握贪心选择的性质,通过实际的用贪心法解决的问题,更加深刻,透彻的了解贪心法的解题方法。二、实验环境(仪器设备、软件等)1、机房电脑 window XP2、Microsoft Visual C+6.03、实验原理(或要求)1、用贪心法实现哈夫曼编码的

2、算法四、实验步骤程序代码如下:#include#include #include typedef char*HuffmanCode;typedef struct unsigned int weight; /用来存放各个结点的权值 unsigned int parent,LChild,RChild; HTNode, *HuffmanTree; /动态分配数组,存储哈夫曼树/选择两个parent为0,且weight最小的结点s1和s2void Select(HuffmanTree *ht,int n,int *s1,int *s2) int i,min; for(i=1; i=n; i+) if(

3、*ht)i.parent=0) min=i; break; for(i=1; i=n; i+) if(*ht)i.parent=0) if(*ht)i.weight(*ht)min.weight) min=i; *s1=min; for(i=1; i=n; i+) if(*ht)i.parent=0 & i!=(*s1) min=i; break; for(i=1; i=n; i+) if(*ht)i.parent=0 & i!=(*s1) if(*ht)i.weight(*ht)min.weight) min=i; *s2=min;/构造哈夫曼树ht。w存放已知的n个权值void CrtHu

4、ffmanTree(HuffmanTree *ht,int *w,int n) int m,i,s1,s2; m=2*n-1; *ht=(HuffmanTree)malloc(m+1)*sizeof(HTNode); for(i=1; i=n; i+) /1-n号存放叶子结点,初始化 (*ht)i.weight=wi; (*ht)i.LChild=0; (*ht)i.parent=0; (*ht)i.RChild=0; for(i=n+1; i=m; i+) (*ht)i.weight=0; (*ht)i.LChild=0; (*ht)i.parent=0; (*ht)i.RChild=0;

5、/非叶子结点初始化 printf(nHuffmanTree: n); for(i=n+1; i=m; i+) /创建非叶子结点,建哈夫曼树 /在(*ht)1(*ht)i-1的范围内选择两个parent为0 /且weight最小的结点,其序号分别赋值给s1、s2 Select(ht,i-1,&s1,&s2); (*ht)s1.parent=i; (*ht)s2.parent=i; (*ht)i.LChild=s1; (*ht)i.RChild=s2; (*ht)i.weight=(*ht)s1.weight+(*ht)s2.weight; printf(%d (%d, %d)n,(*ht)i.w

6、eight,(*ht)s1.weight,(*ht)s2.weight); printf(n); /哈夫曼树建立完毕/从叶子结点到根,逆向求每个叶子结点对应的哈夫曼编码void CrtHuffmanCode(HuffmanTree *ht, HuffmanCode *hc, int n) char *cd; int i,start,p; unsigned int c; hc=(HuffmanCode *)malloc(n+1)*sizeof(char *); /分配n个编码的头指针 cd=(char *)malloc(n*sizeof(char); /分配求当前编码的工作空间 cdn-1=0;

7、 /从右向左逐位存放编码,首先存放编码结束符 for(i=1; i=n; i+) /求n个叶子结点对应的哈夫曼编码 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; /左分支标0 else cd-start=1; /右分支标1 hci=(char *)malloc(n-start)*sizeof(char); /为第i个编码分配空间 strcpy(hci,&cdstart); free(cd); for(i=

8、1; i=n; i+) printf(HuffmanCode of %3d is %sn,(*ht)i.weight,hci); printf(n);void main() HuffmanTree HT; HuffmanCode HC; int *w,i,n,wei; printf(nn = ); scanf(%d,&n); w=(int *)malloc(n+1)*sizeof(int); printf(ninput the %d elements weight:n,n); for(i=1; i=n; i+) printf(%d: ,i); fflush(stdin); scanf(%d,&

9、wei); wi=wei; CrtHuffmanTree(&HT,w,n); CrtHuffmanCode(&HT,&HC,n); 4、记录与处理(实验数据、误差分析、结果分析)实验运行结果如下:6、思考题1、冠军淘汰赛问题的算法。程序代码如下:#includeusing namespace std;int Comp(int a,int b);char Game(char r,int n);char Game(char r,int n) int i=n; while(i1) i=i/2; for(int j=0;ji;j+) if(Comp(rj+i,rj) rj=rj+i; return r0;int Comp(int a,int b) if(ab) return 1;int main() char r8=a,c,r,w,h,t,j,o; coutthe winner is Game(r,8)endl; return 0;7、实验小结 通过本次实验掌握了贪心法的设计思想,掌握了贪心法的执行过程,掌握了贪心法的求解过程,熟练掌握了求解过程的步骤,掌握了贪心选择的性质,通过实际的用贪心法解决的问题,更加深刻,透彻的了解贪心法的解题方法。

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

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