《编写一个哈夫曼译码器模拟程序》实习报告.doc

上传人:marr****208 文档编号:132273432 上传时间:2020-05-14 格式:DOC 页数:12 大小:112KB
返回 下载 相关 举报
《编写一个哈夫曼译码器模拟程序》实习报告.doc_第1页
第1页 / 共12页
《编写一个哈夫曼译码器模拟程序》实习报告.doc_第2页
第2页 / 共12页
《编写一个哈夫曼译码器模拟程序》实习报告.doc_第3页
第3页 / 共12页
《编写一个哈夫曼译码器模拟程序》实习报告.doc_第4页
第4页 / 共12页
《编写一个哈夫曼译码器模拟程序》实习报告.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《《编写一个哈夫曼译码器模拟程序》实习报告.doc》由会员分享,可在线阅读,更多相关《《编写一个哈夫曼译码器模拟程序》实习报告.doc(12页珍藏版)》请在金锄头文库上搜索。

1、实习报告题目:编写一个哈夫曼/译码器模拟程序班级:姓名:学号:一二 需求分析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频度18

2、3 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不为空,则D

3、1 中存在唯一的元素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清为空树。 BiTreeEmpt

4、y(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#inclu

5、de#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 ;i

6、f(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

7、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);/ch

8、ar 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;/-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号