实验模板——哈夫曼编译码系统
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
五、实验环境(使用的软硬件):
利用Visual C++集成开发环境进行本实验的操作。
六、实验步骤及操作:
1.启动VC++,新建工程/Win32 Console Application,选择“An Empty Project”建工程名为“哈夫曼编/译码系统”;
2.新建/C/C++Header Fole,文件名保存为“HuffmanUse.c”,选中菜单“add to project”;
printf("\t*3.将输入的报文编译为文本*\t\n");
printf("\t* *\t\n");
printf("\t*4.退出系统*\t\n");
printf("\t* *\t\n");
printf("\t* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\t\n");
printf("\t* **哈夫曼编译码系统** *\t\n");
printf("\t* *\t\n");
pintf("\t*1.构建哈夫曼树及哈夫曼编码*\t\n");
printf("\t* *\t\n");
printf("\t*2.将输入的文本编译为报文*\t\n");
printf("\t* *\t\n");
3.通过‘程序’输入,实现原文的解码和输出:“01011001111111111110100001110101101111111110”;
《2》.测试结果
1.系统的开始界面,更新哈夫曼树,输出哈夫曼树及其哈弗曼编码
2.通过‘程序’,输入:“THIS PROGRAM IS MY FAVORITE”
3.通过‘程序’,输入:“01011001111111111110100001110101101111111110”
四、实验内容:
1.初始化:从数据文件DataFile.data中读入字符及每个字符的权值,建
立哈夫曼树HuffTree;
2.编码(EnCoding):用已建好的哈夫曼树,对输入的文本进行编码形成报文并输出;
3.译码(Decoding):利用已建好的哈夫曼树,对输入的代码进行解码形成原文并输出;
4.输出:输出字符以及各字符出现的频度(或概率);
4.退出系统
八、实验总结及心得体会:
(1)需求与规格说明
利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码。对于双工信道,每端都需要一个完整的编/译码系统。
(2)设计
1设计思想:
存储结构:……………………………
printf("\t*请输入您的选择选择: "); scanf("%d",&t);
}
《4》.哈夫曼编/译码的主要操作
程序如下:
…………………………..
void main()
{
………………………….
while(1)
{
switch(t)
{
case 1:………………………
//输出哈夫曼树
//输出哈夫曼编码
闽江学院电子系
实验报告
学生姓名:
班级:
学号:
课程:数据结构与算法
一、实验题目:哈夫曼编/译码系统的设计与实现
二、实验地点:计算机软件与网络实验室-实验楼A210
三、实验目的:
1.理解哈夫曼树的特征及其应用;
2.在对哈夫曼树进行理解的基础上,构造哈夫曼树,并用构造的哈夫曼树进行编码和译码;
3.通过该实验,使学生对二叉树的构建、遍历等以及哈夫曼编码的应用有更深层次的理解。
主要算法思想:……………………………
2设计表示:(具体函数名可改,下图仅作参考)
③实现注释:
开始界面Start_Screen()可实现7个功能选择,分别如下:
< 1 >更新哈夫曼编码信息:通过输入重新创建哈夫曼树及哈弗曼编码;
< 2 >显示哈夫曼树及哈弗曼编码:以合适的格式输出哈夫曼所有信息;
< 3 >将输入的文本编译成报文:通过键盘输入文本,利用已建好的哈夫曼编码,对所输入的文本进行编码形成报文;
字符
A
B
C
D
E
F
G
H
I
J
K
L
M
频度
64
13
22
32
103
21
15
47
57
1
5
32
20
字符
NOPQR NhomakorabeaS
T
U
V
W
X
Y
Z
频度
57
63
15
1
48
51
80
23
8
18
1
16
1
并实现如下操作:
1.更新哈夫曼树,输出哈夫曼树及其哈弗曼编码;
2.通过‘程序’输入,实现报文的译码和输出:“THIS PROGRAM IS MY FAVORITE”;
exit(0);//表示程序正常退出
break;
case2://编码,对所输入的文本进行编码形成报文
break;
case3://译码,对所输入的报文进行解译形成文本
break;
case4:exit(0);
break;
default:……….
}
}
}
七、实验结果:
《1》.测试数据
用下表中给出的字符集和频度的实际统计数据建立哈夫曼树:
3.程序如下:
…………………………………….
《3》.开始界面设计
void Start_Screen()
{
printf("\n\n\n");
printf("\t* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\t\n");
printf("\t* *\t\n");
< 4 >将输入的报本编译成文本:通过键盘输入报文,利用已建好的哈夫曼树,对所输入的报文进行译码形成文本;
(3)调试报告
调试过程中遇到问题…………………..
九、对本实验过程及方法、手段的改进建议:
报告评分:
指导教师签字:批阅日期:
注意:
实验报告以纸质文档形式上交。实验报告将记入平时成绩;
每次实验开始时,交上一次的实验报告,否则将扣除此次实验成绩。
利用Visual C++集成开发环境进行本实验的操作。
六、实验步骤及操作:
1.启动VC++,新建工程/Win32 Console Application,选择“An Empty Project”建工程名为“哈夫曼编/译码系统”;
2.新建/C/C++Header Fole,文件名保存为“HuffmanUse.c”,选中菜单“add to project”;
printf("\t*3.将输入的报文编译为文本*\t\n");
printf("\t* *\t\n");
printf("\t*4.退出系统*\t\n");
printf("\t* *\t\n");
printf("\t* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\t\n");
printf("\t* **哈夫曼编译码系统** *\t\n");
printf("\t* *\t\n");
pintf("\t*1.构建哈夫曼树及哈夫曼编码*\t\n");
printf("\t* *\t\n");
printf("\t*2.将输入的文本编译为报文*\t\n");
printf("\t* *\t\n");
3.通过‘程序’输入,实现原文的解码和输出:“01011001111111111110100001110101101111111110”;
《2》.测试结果
1.系统的开始界面,更新哈夫曼树,输出哈夫曼树及其哈弗曼编码
2.通过‘程序’,输入:“THIS PROGRAM IS MY FAVORITE”
3.通过‘程序’,输入:“01011001111111111110100001110101101111111110”
四、实验内容:
1.初始化:从数据文件DataFile.data中读入字符及每个字符的权值,建
立哈夫曼树HuffTree;
2.编码(EnCoding):用已建好的哈夫曼树,对输入的文本进行编码形成报文并输出;
3.译码(Decoding):利用已建好的哈夫曼树,对输入的代码进行解码形成原文并输出;
4.输出:输出字符以及各字符出现的频度(或概率);
4.退出系统
八、实验总结及心得体会:
(1)需求与规格说明
利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码。对于双工信道,每端都需要一个完整的编/译码系统。
(2)设计
1设计思想:
存储结构:……………………………
printf("\t*请输入您的选择选择: "); scanf("%d",&t);
}
《4》.哈夫曼编/译码的主要操作
程序如下:
…………………………..
void main()
{
………………………….
while(1)
{
switch(t)
{
case 1:………………………
//输出哈夫曼树
//输出哈夫曼编码
闽江学院电子系
实验报告
学生姓名:
班级:
学号:
课程:数据结构与算法
一、实验题目:哈夫曼编/译码系统的设计与实现
二、实验地点:计算机软件与网络实验室-实验楼A210
三、实验目的:
1.理解哈夫曼树的特征及其应用;
2.在对哈夫曼树进行理解的基础上,构造哈夫曼树,并用构造的哈夫曼树进行编码和译码;
3.通过该实验,使学生对二叉树的构建、遍历等以及哈夫曼编码的应用有更深层次的理解。
主要算法思想:……………………………
2设计表示:(具体函数名可改,下图仅作参考)
③实现注释:
开始界面Start_Screen()可实现7个功能选择,分别如下:
< 1 >更新哈夫曼编码信息:通过输入重新创建哈夫曼树及哈弗曼编码;
< 2 >显示哈夫曼树及哈弗曼编码:以合适的格式输出哈夫曼所有信息;
< 3 >将输入的文本编译成报文:通过键盘输入文本,利用已建好的哈夫曼编码,对所输入的文本进行编码形成报文;
字符
A
B
C
D
E
F
G
H
I
J
K
L
M
频度
64
13
22
32
103
21
15
47
57
1
5
32
20
字符
NOPQR NhomakorabeaS
T
U
V
W
X
Y
Z
频度
57
63
15
1
48
51
80
23
8
18
1
16
1
并实现如下操作:
1.更新哈夫曼树,输出哈夫曼树及其哈弗曼编码;
2.通过‘程序’输入,实现报文的译码和输出:“THIS PROGRAM IS MY FAVORITE”;
exit(0);//表示程序正常退出
break;
case2://编码,对所输入的文本进行编码形成报文
break;
case3://译码,对所输入的报文进行解译形成文本
break;
case4:exit(0);
break;
default:……….
}
}
}
七、实验结果:
《1》.测试数据
用下表中给出的字符集和频度的实际统计数据建立哈夫曼树:
3.程序如下:
…………………………………….
《3》.开始界面设计
void Start_Screen()
{
printf("\n\n\n");
printf("\t* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\t\n");
printf("\t* *\t\n");
< 4 >将输入的报本编译成文本:通过键盘输入报文,利用已建好的哈夫曼树,对所输入的报文进行译码形成文本;
(3)调试报告
调试过程中遇到问题…………………..
九、对本实验过程及方法、手段的改进建议:
报告评分:
指导教师签字:批阅日期:
注意:
实验报告以纸质文档形式上交。实验报告将记入平时成绩;
每次实验开始时,交上一次的实验报告,否则将扣除此次实验成绩。