哈夫曼编(译)码实验报告

哈夫曼编(译)码实验报告

ID:13799839

大小:267.50 KB

页数:12页

时间:2018-07-24

哈夫曼编(译)码实验报告_第1页
哈夫曼编(译)码实验报告_第2页
哈夫曼编(译)码实验报告_第3页
哈夫曼编(译)码实验报告_第4页
哈夫曼编(译)码实验报告_第5页
资源描述:

《哈夫曼编(译)码实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验三使用二叉链表实现二叉树的存储验证和设计相关算法题目:编制一个哈夫曼编码和译码程序班级:计科0603姓名:李汉刚学号:20064140303完成日期:2008-5-23一、实验目的1、掌握树、森林和二叉树的概念和它们的特性以及它们之间是怎样相互转换的,理解二叉树的三种遍历:先序遍历、中序遍历和后序遍历,和树的两种遍历:先序遍历和后序遍历。2、理解二叉树的基本运算算法实现以及它的非递归运算算法和层次遍历算法,了解二叉树的线索化及其它的应用。3、掌握树和二叉树的几种存储结构以及它的构造,学会使用二叉链表实现二叉

2、树的存储验证和设计相关算法。二、实验环境1、操作系统:WindowsXP2、编程环境:VisualC++6.0或者Dev-Cpp三、实验内容1、建立一棵哈夫曼编码树,数据的输入和输出,采用文件操作。文件内容:输入文件为字符和频度,文件名input.txt。A0.3B0.2C0.05D0.05E0.1F0.3输出文件为编码文件,格式如下,文件名output.txt。A10B00C0110D0111E010F112、编码指定字符串,请输入一个字符串:ABFEDEFAD输出码流:1000110100111010111

3、001113、译码指定码流为字符串,请输入一个码流:110101001001000100I11输出字符串:FEAEEBABD4、编码结果以文本方式存储在文件中,用户界面可以设计为“菜单”方式:显示上述功能符号,再加上“0”,表示退出运行Quit。请用户键入一个选择功能符。此功能执行完毕后再显示此菜单,直至某次用户选择“0”为止。第12页共12页5、数据测试(后面运行结果)。四、实验步骤(一)、概要设计利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信心传输时间,降低传输成本。但是,这要求在发送器端通过一个编码

4、系统对待传输数据预先编码,在接受端将传来的数据进行译码(复原)。对于双工信道(即可以可以双向传输信息的通道),每端都需要一个完整的编/译码系统。1、抽象数据类型定义如下:ADTHuffman{数据对象:D={ai

5、1≤i≤n,n≥0,ai属ElemType类型}数据关系:R={

6、ai,aj∈D,1≤i≤n,1≤j≤n,其中每个元素只有已过去前驱,可以有零个和多个后继,有且只有一个元素没有前驱}基本运算:Inithuffman(t,n):初始化哈夫曼树:建立一棵哈夫曼树t。Createhcode(t

7、,hcd,n):对建立哈夫曼树进行编码并储存在数组hcd中。Encoding(t,hcd,n):将字符进行编码。Decoding(t,hcd,n):将码流进行译码。Readhuffman(t):读取哈夫曼树的数据。Writehuffman(savecode,save):存储savecode,save数组中哈夫曼编码的数据。}2、主程序intmain(){初始化哈夫曼树;for(;;){switch(返回菜单函数代码){case1:建立哈夫曼编码;break;case2:输出哈夫曼编码;break;case3:编

8、码;break;case4:译码;break;case0:退出;default:输入菜单代码有误,请重新输入;break;}}return0;}第12页共12页3、模块间调用流程图主函数模块初始化函数模块读取文件中数据菜单1:建立哈夫曼树编码2:输出哈夫曼树编码3:编码4:译码0:退出菜单代码12340退出译码函数模块编码函数模块输出编码函数模块建立编码函数模块模块流程图(二)、详细设计1、头文件定义及预定义#include#include#include

9、#defineW6#defineN50#defineM100#defineV10002、定义数据类型typedefstruct/*定义哈夫曼树类型*/第12页共12页{chardata;/*结点值*/floatweight;/*频度*/intparent;/*双亲点*/intlchild;/*左孩子结点*/intrchild;/*右孩子*/}Hufffman;typedefstruct/*定义存放哈夫曼编码类型*/{charcd[N];/*存放当前结点的哈夫曼码*/intstart;/*cd[start]~cd

10、[n]存放哈夫曼码*/}Hcode;Huffmant[M];//定义一个哈夫曼树类型数组Hcodehcd[V];//定义一个哈夫曼编码类型数组3、函数声明charmenu();/*声明菜单函数*/voidInithuffman(Huffmant[],intn);/*声明初始化哈夫曼树*/voidCreatehcode(Huffmant[],Hcodehcd[],intn);/*声明建立

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。