资源预览内容
第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
第9页 / 共12页
第10页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
实习报告题目:编写一个哈夫曼/译码器模拟程序班级:姓名:学号:一二 需求分析1.利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本,本程序要求将一些代码用哈夫曼编码进行编码。2. 首先要对输入的字符和响应的统计使用频率进行编码,将编好的代码放入响应的文件当中,当绎码时,读出要译的原码利用已编好的哈夫曼进行绎码。3. 测试数据(1)利用教科书例6-2的数据调试程序。(2)用下表给出的字符集和频度的实际统计数据建立哈夫曼树,并实现以下报文的编码和译码:“THIS PROGRAM IS MY FAVORITE”字符 A B C D E F G H I J K L M频度183 64 13 22 32 103 21 15 47 57 1 5 32 20字符N O P Q R S T U V W X Y Z频度57 63 15 1 48 51 80 23 8 18 1 16 1二概要设计1.堆栈的抽象数据类型定义为:ADT BinaryTree数据对象D:D是具有特性的数据元素的集合。数据关系R:若D=,则R也是空,称BinaryTree为空二叉树;若D不等空,则R=H,H是如下二元关系;(1) 在D中存在唯一的称为根的数据元素root,它在关系H 下无前驱;(2) 若D-root不等于空,则存在D-root=D1,D2,且D!D2=空;(3) 若 D1不为空,则D1 中存在唯一的元素x1,H,且存在Dr上的关系 HrH;H=,H1,Hr;(4) (D1,H1) 是一棵符合定义的二叉树,称为根的左子树,Dr,Hr是一棵符合本定义的二叉树,称为根的右子树。数据操作:InitBiTree(&T);操作结果:构造空的二叉树。DestroyBiTree(&T)初始条件:二叉树T 存在。操作结果:销毁二叉树T.CreatebiTree(&T,definition);初始条件:definition给出二叉树T的定义。操作结果:按definition构造二叉树T。ClearBiTree(&T)初始条件:二叉树T存在。操作结果:将二叉树T清为空树。 BiTreeEmpty(T);初始条件:二叉树T存在。操作结果:返回T 深度。Root(T);初始条件:二叉树T存在。操作荚果:返回T的根。Value(T,e);初始条件:二叉树T存在,e是t中某个结点。操作结果:返回e的值。Assign(T,&e,value)初始条件:二叉树T存在,e是t中某个结点。操作结果:结点e赋值为valuel。ADT BinaryTree 本程序包含三个模块:1) 主程序模块; void main()初始二叉树;do 接受命令; 处理命令;while(“命令”=”推出”)2) 编码模块。3) 译码模块。 主程序模块编码模块译码模块三 详细设计#include#include#include#include#include #includeusing namespace std;int s1=0,s2=0;/s1s2/typedef structint weight;int parent,lchild,rchild;HTNode,*HuffmanTree;typedef char *HuffmanCode;/void creat(int *w,char *c)char ch;int n,i;ifstream fin(hfmTree.txt);for(i=1;in;wi=n;ci=ch;coutendl;for(i=1;i=27;i+)cout:ci :setw(4)wi ;if(i%4=0)coutendl;coutendl;cout,endl;/-select-/void Select(HTNode *HT,int n)int i;HTNode *p;p=HT;for(i=1;iparent=0)s1=i;break;for(i=1;iparent=0)s2=i;break;for(i=1;iweightweight & (p+i-1)-parent=0)if(i=s2)s2=s1;s1=i;elses1=i;for(i=1;iweightweight & (p+i-1)-parent=0)s2=i;/-/-/void Encoding(HuffmanCode HC,char *d,int n)char ch;int i;ifstream fin(ToBeTran.txt); /ofstream fout(CodePrin.txt); /ch=fin.get(); /while(ch!=EOF)for(i=1;i=n;i+)if(di=ch)break;foutHCi;ch=fin.get();fin.close();fout.close();/-/void Decoding(HuffmanCode HC,char *w,int k)ifstream fin(CodePrin.txt);/ofstream fout(TextFile.txt);/char str20;char c200,ch;int i=0,j=1,n,m,t;ch=fin.get();while(ch!=EOF)/c+i=ch;ch=fin.get();while(ji)/for(n=1;n=k;n+)t=strlen(HCn);for(m=1;m=t;m+)strm-1=cm+j-1;strm-1=0;if(strcmp(str,HCn)=0)foutwn;break;j+=strlen(HCn);fin.close();/fout.close();/Decoding/-/-/void print()ifstream fin(CodePrin.txt);/ifstream fi(ToBeTran.txt);char ch;int i=0;coutendl;ch=fi.get();while(ch!=EOF)coutch;ch=fi.get();coutendlendlendl;coutendl;ch=fin.get();while(ch!=EOF)coutch;+i;if(i%50=0)coutendl;ch=fin.get();fin.close();coutendlendl;/-
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号