- 116
- 0
- 约7.95千字
- 约 10页
- 2020-12-13 发布于山东
- 举报
实验报告
1、实验目的 :
理解哈夫曼树的含义和性质。
掌握哈夫曼树的存储结构以及描述方法。
掌握哈夫曼树的生成方法。
掌握哈夫曼编码的一般方法,并理解其在数据通讯中的应用。
2、实验内容 :
哈夫曼树与哈弗曼编码、译码
问题描述:
哈夫曼问题的提出可以参考教材P.145.
利用哈弗曼编码进行通信可以大大提高通信利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码。
b. 算法提示:
参见教材 P.147-148 算法 6.12 、6.13 的描述。
3、实验要求 :
建立哈夫曼树,实现编码,译码。
1 . 初始化( Initialization )。从终端读入字符集大小 n,以及 n 个字符和 n 个权值, 建立哈夫曼树,
○
并将它存于文件 hfmTree 中。
2 . 编码( Encoding )。利用已建好的哈夫曼树(如不在内存,则从文件 hfmTree 中读入),对文件
○
ToBeTran 中的正文进行编码,然后将结果存入文件 CodeFile 中。
○3 . 译码( Decoding ) 。利用已建好的哈夫曼树将文件 CodeFile 中的代码进行译码,结果存入文件
TextFile 中。
○4 . 输出代码文件( Print )。将文件 CodeFile 以紧凑格式显示在终端上,每行 50 个代码。同时将此
字符形式的编码文件写入文件 CodePrint 中。
○5 . 输出哈夫曼树( TreePrinting )。将已在内存中的哈夫曼树以直观的方式(树或凹入表形式)显
示在终端上,同时将此字符形式的哈夫曼树写入文件 TreePrint 中。
测试数据:
设权值 c= (a, b, c, d , e, f, g, h)
w=( 5, 29, 7, 8, 14, 23,3, 11),n=8。
按照字符‘ 0’或‘ 1’确定找左孩子或右孩子,则权值对应的编码为:
: 0001,29: 11, 7: 1110, 8: 1111
: 110,23: 01, 3: 0000, 11: 001
。
四实验代码
#include iostream.h #include stdio.h
#include iomanip.h typedef struct
#include string.h {
#include malloc.h int weight,K;
第 页 共 页
int parent,lchild,rchild;
for (;i=j;i++)
}HTNode,* HuffmanTree;
if
((HT[i].parent==0)(i!=*s1)(HT[i].weight
typedef char **HuffmanCode;
HT[*s2].weight))
char str[50];
*s2=i;
int wa[50];
HuffmanTree HT;
}
HuffmanCode HC;
//
--------------
算
法
int w[50],i,j,n=8;
6.12--------------------------
char z[50];
void
HuffmanCoding(HuffmanTree
int flag=0;
HT,HuffmanCode HC,int *w,int n)
int numb=0;
{
//
-----------------
求
哈
夫
曼
编
码
int m,i,s1,s2,start;
-----------------------
struct cou {
int c,f;
char data;
HuffmanTree p;
int count;
char *cd;
}cou[50];
if(n=1)
void select(HuffmanTree HT,int j,int *s1,int
return;//
检测结点数是否可以构成树
*s2)
m=2*n-1;
{
int i;
HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode)
//
找 weight 最小的结点
);
for (i=1;i=j;i++)
for(p=HT+1,i=1;i=n;i++,p++)
if (HT[i].parent==0)
{
{*s1=i;break;}
p-weight=wa[i-1];
for (;i=j;i++)
p-parent=0;
if
p-lchild=0;
((HT[i].parent==0)(HT[i].weightHT[*s1].w
p-rchild=0;
eight))
}
*s1=i;
for(;i=m;++i,++p)
HT[*s1].p
您可能关注的文档
- (完整word版)人教版五年级上册英语期末试题及答案.docx
- (完整word版)人教版八年级数学上册第十一章三角形练习题.docx
- (完整word版)人教版八年级生物下册期中测试题.docx
- (完整word版)人教版初中物理知识点汇总.docx
- (完整word版)人教版初中语文中考模拟试题(含答案).docx
- (完整word版)人教版四年级数学上册期末复习总结试卷全套.docx
- (完整word版)人教版小学数学一年级上册时钟练习题.docx
- (完整word版)人教版数学五年级上册复习计划已.docx
- (完整word版)人教版英语七年级上册各单元基础知识总复习.docx
- (完整word版)人教版高一化学必修1第三章金属及其化合物单元测试题.docx
- 1.1 党领导人民制定宪法 课件(内嵌视频)-2025-2026学年统编版道德与法治八年级下册.pptx
- 2026年高考上海卷文综政治真题和答案.docx
- 2026年高考全国II卷文科综合真题试卷(含答案).docx
- 2026年高考北京卷文综政治试卷含答案.docx
- 2026年高考全国II卷文科综合真题试卷及答案.docx
- 部编版五年级下册语文第七单元培优卷A卷(解析版).docx
- 广西南宁武鸣区2023-2024学年八年级下学期期中学业监测物理试题(解析版).pdf
- 福建省莆田擢英中学2023-2024学年高一下学期3月第一次月考数学试卷(含答案).pdf
- 湖南省长沙市雨花区明德雨花实验中学2024-2025学年八年级下学期期末考试物理试题(解析版).docx
- 广东省珠海市香洲区2024-2025学年八年级下学期物理期末试卷(解析版).docx
原创力文档

文档评论(0)