下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-.z.**中医药大学医学信息工程学院实验报告课程名称:数据构造与算法专业班级:计算机科学与技术()级学生**:学生**:实验名称:实验成绩:课程类别:必修限选□公选□其它□哈夫曼编码及应用实验目的:了解哈夫曼树的应用,掌握哈夫曼树的构造方法及前缀码的应用。实验性质:设计性,应用性。实验步骤:输入一串字符,统计其中所有的不同字符及其个数,得出每个不同字符在文中出现的频率。根据每个字符频率建立哈夫曼树,输出字符对应的编码。[实验要求]实验要求独立完成。迟交或不交的或源代码雷同者一律不做作业登记评分。[作业提交](实验报告写在此处)给出含有6,8,11个字符的实例,统计他们的频率,画出哈夫曼树,并用算法验证结果。662424D1C11B2A21)1D1C11B2A21)1代码写在此处#include"stdio.h"#include<malloc.h>#defineMA*NODE20#defineMA*LEAF30#defineMA*INT234567structHtNode{ intww; intparent,lchild,rchild;};structHtTree{ introot; structHtNodeht[MA*NODE];};typedefstructHtTreePHtTree;PHtTree*huffman(intm,int*w);voidmain(){chars[MA*NODE];intm=0;charw[MA*NODE];intcount=0;intt=0;inta[MA*NODE];int*b;char*code; code=(char*)malloc(sizeof(char));b=(int*)malloc(sizeof(int));printf("请输入字符窜:\n");for(inti=0;i<MA*NODE;i++){ scanf("%c",&s[i]);++count; if(s[i]=='#') break;}for(i=0;i<count-1;i++){a[i]=0;b[m]=0; for(intj=0;j<count-1;j++) { if(s[i]==s[j]&&i<=j){ a[i]=a[i]+1; } if(s[i]==s[j]&&i>j){ a[i]=a[i]+1; s[i]=NULL; } } if(s[i]!=NULL){ b[m]=a[i]; w[m]=s[i]; m++; printf("%c的个数%d,频率为%f\n",w[m-1],b[m-1],(float)a[i]/(count-1)); }}PHtTree*pht;pht=(PHtTree*)malloc(sizeof(PHtTree));pht=huffman(m,b);for(i=0;i<2*m-1;i++){printf("%d",pht->ht[i].ww);}printf("\n");for(i=0;i<m;i++){intc;c=i;t=0;int p=pht->ht[i].parent; while(p!=-1) { if(pht->ht[p].lchild==c) {code[t]='0'; t++; } if(pht->ht[p].rchild==c) { code[t]='1'; t++; } pht->root--;c=p; p=pht->ht[p].parent; } printf("%c的编码是",w[i]); for(inty=t-1;y>=0;y--) printf("%c",code[y]); printf("\n");}}PHtTree*huffman(intm,int*w)//构造具有m各节点的哈弗曼树{PHtTree*pht;inti,j,*1,*2,m1,m2;pht=(PHtTree*)malloc(sizeof(PHtTree));if(pht==NULL){printf("outofspace!\n");returnpht;}for(i=0;i<2*m-1;i++){pht->ht[i].lchild=-1;pht->ht[i].rchild=-1;pht->ht[i].parent=-1; if(i<m) pht->ht[i].ww=w[i]; else pht->ht[i].ww=-1;}for(i=0;i<m-1;i++){ m1=MA*INT; m2=MA*INT; *1=-1; *2=-1; for(j=0;j<m+i;j++) if(pht->ht[j].ww<m1&&pht->ht[j].parent==-1) { m2=m1; *2=*1; m1=pht->ht[j].ww; *1=j; } elseif(pht->ht[j].ww<m2&&pht->ht[j].parent==-1) { m2=pht->ht[j].ww; *2=j; } pht->ht[*1].parent=m+i; pht->ht[*2].parent=m+i; pht->ht[m+i]
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年西宁客运从业资格证考什么
- 六年级英语下册 一课一练-Unit 4 Free Time Lesson 1(有答案)(人教一起点)
- 印刷标签质量合同范例
- 地产招商服务合同范例
- 个人售房合同范例
- 2024年国际货物买卖合同(标的:高价值电子产品)
- 2024年工业资产买卖合同模板
- 临沂大学《钢琴》2021-2022学年第一学期期末试卷
- 临沂大学《环境学科前沿知识讲座》2021-2022学年第一学期期末试卷
- 【机电实务】达为 教材精讲班教案 25-第4章-4.7-石油化工设备安装技术(五)
- 2024年消防月全员消防安全知识专题培训-附20起典型火灾案例
- 恒牙临床解剖-上颌中切牙(牙体解剖学课件)
- GB/T 44592-2024红树林生态保护修复技术规程
- GB/T 44413-2024城市轨道交通分类
- 2024年共青团入团积极分子结业考试题库及答案
- (正式版)JBT 14449-2024 起重机械焊接工艺评定
- 2024年国家公务员考试行测真题及解析(完整版)
- 公司工会活动积分制考核表
- 10以内口算100道题共16套-直接打印版
- 防呆法(防错法)Poka-Yoke
- 国自然患者知情同意书
评论
0/150
提交评论