1 / 13
文档名称:

数据结构哈夫曼树c,,实验报告.docx

格式:docx   大小:20KB   页数:13
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构哈夫曼树c,,实验报告.docx

上传人:kang19821012 2019/2/21 文件大小:20 KB

下载得到文件列表

数据结构哈夫曼树c,,实验报告.docx

文档介绍

文档介绍:数据结构哈夫曼树c,,实验报告计算机学院信管专业数据结构课程设计题目:哈夫曼树的应用班级: 姓名:号:同组人姓名: 起迄日期:课程设计地点:指导教师: 完成日期:XX年12月目录一、需求分析…………………………………………3二、概要设计…………………………………………4三、详细设计…………………………………………6四、调试分析和测试结果……………………………7五、心得体会和总结………………………………10六、参考文献………………………………………10七、附录……………………………………………11 一、需求分析实验要求要求用到数据结构课上学到的线性表的知识,所以就要充分而清晰的理解关于线性表的知识。要求实现的基本功能很简单,只有删除和插入,增加功能也不过是加上修改。这些在数据结构课上已经讲过,只要能够理解关于线性表的几个相关的基本算法就可以了。问题是将输入的信息保存入文件和从文件输出。这里基本是自学的内容,而且要考虑到是否要自行选择保存的磁盘。综上,做这个课题,要具备的知识就是线性表的基本算法,文件的保存和读取算法,必要的C或者C++知识,以及丰富的程序调适经验。实验任务一个完整的系统应具有以下功能: ,以及n个字符和n个权值,;,对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中,并输出结果,将文件CodeFile以紧凑格式先是在终端上,每行50个代码。同时将此字符形式的编码文件写入文件CodePrint中。,结果存入文件TextFile中,并输出结果。实验步骤分步实施: 1)初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2)完成最低要求:完成功能1; 3)进一步要求:完成功能2和3。有兴趣的同学可以自己扩充系统功能。要求: 1)界面友好,函数功能要划分好2)总体设计应画一流程图3)程序要加必要的注释4)要提供程序测试方案 5)程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。二、概要设计设计思想哈夫曼树用邻接矩阵作为存储结构,借助静态链表来实现遍历。函数间的关系如图所示: 数据结构与算法设计哈夫曼编\译码器的主要功能是先建立哈夫曼树,然后利用建好的哈夫曼树生成哈夫曼编码后进行译码。在数据通信中,经常需要将传送的文字转换成由二进制字符0、1组成的二进制串,称之为编码。构造一棵哈夫曼树,规定哈夫曼树中的左分之代表0,右分支代表1,则从根节点到每个叶子节点所经过的路径分支组成的0和1的序列便为该节点对应字符的编码,称之为哈夫曼编码。最简单的二进制编码方式是等长编码。若采用不等长编码,让出现频率高的字符具有较短的编码,让出现频率低的字符具有较长的编码,这样可能缩短传送电文的总长度。哈夫曼树课用于构造使电文的编码总长最短的编码方案。其主要流程图如下图所示。哈夫曼树编\译码器流程图数据结构课内实验报告哈夫曼树专业:计算机信息工程学院班级:物联网姓名: 学号: 指导老师:张红“哈夫曼树”实验报告一、实验目的: 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; 提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。二、实验内容: ; ; 三、概要设计 1、创建哈夫曼树的描述: 数据结构:数据的逻辑结构是树状结构;采用静态的三叉链表存放; 算法思想:-N个元素进行初始化,存放叶子节点,他们都没有孩子和双亲。-1个非叶子节点元素。3. 从当前森林中选择两棵根的权值最小的树;删除合并是将选到的两棵树的根权和存入数组当前最前面的空闲元素中,并置入相应的双亲与孩子的位置。; 2、哈夫曼树编码的描述: 数据结构:数据的逻辑结构是树状结构;采用静态的三叉链表存放;算法思想:,申请一个字符型指针,用来存放临时的编码串;,若其为它双亲节点的左孩子则编码标0,否则标1;直到根节点为止,最后把临时存储编码复制到对应的指针数组所指向的内存中;,直到所有的叶子节点都被编码完; 哈夫曼树译码的描述: 数据结构:数据的逻辑结构是树状结构;采用静态的三叉链表存放;算法思想