是树根为止若是的左孩子,则生成,否则生成使得可以进行循环,,对所代表的字符串进行构建哈夫曼树并写入文件,定义文件的指针打开文件的函数,关闭文件输出存储结构打开文本为字母的首地址文件的指针,判断该文件是否为空,若是则判空不能打开文件将所有的字母进行输出关闭文件用来存储所有的字母,用来存储字母的权值定义哈夫曼树定义哈夫曼结点读出文本为打开字符串所在地文件统计字符的种类及各类字符出现的频率构造哈夫曼树的初态输出哈夫曼的初态建立哈夫曼树生成哈夫曼树建立电文哈夫曼编码文件的终态输出哈夫曼的终态评语评阅教师签名年月日成绩初始化利用此函数构造出哈夫曼树接受命令处理命令输出字符统计情况说明构造哈夫曼树输出哈夫曼树的存储结构的初态和终态分别调用和来实现参数输出哈夫曼树的初态初始化输出初态说明输出哈夫曼树的初态参数输出哈夫曼树的终态输出终态说明输出哈夫曼树的终态哈夫曼算法是通过对输入数据的统计,根据其频率来构造出权值,再通过对构造的权值进行建立哈夫曼树。并对其进行和的赋值,进而可以对每个权值所对应的位置进行编码。图哈夫曼算法实现流程图哈夫曼编码是通过对构成最优二叉树的结点进行有规律的和的编码,之后从根结点往下进行不断地延伸,且在延伸的过程中会途径所有的结点并记住每个结点所对应的数值开始读取输入的数据统计字符的频率输入字符排序建立哈夫曼树输入字符编码结束是还是并进行记录,进而可以将每个途径的结点所对应的数值记录在数组中。直到所有的结点都遍历了遍的时候,整个编码的过程也就完成了,而此时数组中所存储的,代码便是每个结点所对应的编码图哈夫曼编码流程图构造哈夫曼树其实就是对以上已经建立好的权值利用哈夫曼算法把它建立成个最优二叉树即哈夫曼树。其详细的过程是通过比较权值域来选取最小的两个权值,进行步步的合并和删除直到权值域中只剩下唯的个所谓的权值时,则整个哈夫曼树的构造便顺利的完成了,而这唯的个权值便是整棵二叉树的根结点。开始数组初始化当前位置编码当前位置进数组换下个位置切换下个位置继续是否为终点结果查找,输出数组空结束是是图哈夫曼树构造流程图详细设计各模块分别为主调函数建立生成并写入文件。具体过程如下主调函数代码解释这是函数里的各个函数调用情况。从盘内中读取文件统计字符种类及各类字符出现的频率的初态输出哈夫曼树的初态建立哈夫曼树生成哈夫曼树的终态的终态输入所有权值比较求出两个最小的权值以此两个权值作为左右孩子合并成棵树,并将这棵树放入到权值域中,且将这两个最小权值删去。权值域的个数为是哈夫曼树构造成功否结束建立代码解释该函数为在中选择为且权值最小的根结点的算法,其序号为和选取最小的根结点的函数以和作为两个最小节点的变量找到该字母的位置统计各种字符的个数,清华大学出版社,苏仕华数据结构课程设计机械工业出版社,谭浩强语言程序设计教程高等教育出版社,致谢对于老师详细的指导和同学们的积极配合予以感谢,同时对各个参考文件的提供出版社以真诚的感谢。附录类型相关变量的定义叶子结点数哈夫曼树中的结点数相关的字母存放编码位串该字母编码的长度编码的类型所有的叶子结点的编码数组权值左右孩子及双亲指针哈夫曼树结点的类型号单元不用统计每种字母出现的次数和种类数目建立在中选择为且权值最小的两个根结点的算法其序号为和,的数字无何意义只是初始值之后用来记录权值,为循环最小权值的下标,为数组结点的总数找到字母在数组中的下标字母个数累加,为字母的总数送对应的字母到数组中存入对应字母的权值是输入字母总数,构造哈夫曼树初始化,是指哈夫曼树所有的结点数目初始化为根结点初始化为根结点输入个叶子结点的权值赋权值在中选择为且权值最小的两个根结点其序号为和为双亲送对应字母到数组中存入对应字母的权值是输入字母总数代码解释下面函数用来构造哈夫曼树。首先初始化哈夫曼树,然后输入前面统计的各个结点的权值,用循环来构造哈夫曼树。,直至上溯到是树根为止若是的左孩子则生成否则生成代码解释对所代表的字符串进行构建哈夫曼树并写入文件。将翻译的二进制码写入文本文件。,对所代表的字符串进行编码并写入文件,定义文件的指针,打开文件的函数为编码的指针,将文件关闭调试与操作说明本次测试是通过建立个名为的文本文档,其中有篇英文字母的文章期望程序能将其读出至界面并实现其它相关的功能。运行程序后,我们可以见到以下运行界面。读出文本从中读取刚输入的字符串并将其输出到显示屏如图所示。图读出文本示意图输出哈夫曼树存储结构的初态下图所示的为哈夫曼树的初态。其中的每行数字分别表示字符的权值,字符的双亲,字符的左孩子,字符的右孩子,而本图为哈夫曼树的初始化如图所示。图哈夫曼树的初态图输出哈夫曼树存储结构的终态该图为哈夫曼树的终态。本图显示的是哈夫曼树的构建以后的其字符的权值,双亲下标,左孩子,右孩子如图所示。图哈夫曼的终态图图哈夫曼树的终态图输出哈夫曼树构成后的抽象图此图的构成首先是从权值域中选取最小的两个权值,在此例中其分别为通过这两个最小的权值合并成为双亲结点之后在将插入到权值域中,同时将此两个最小的结点删除。按照此方法步步的运行下去最终使得权值域中只剩下唯的个权值,至此最优二叉树便建立好了。并且这个最后的结点便是整棵二叉树中的根结点,在本例子中便是整棵最优二叉树的根结点。图哈夫曼树示意图学年设计总结与体会本学年设计的主要目的是要建立个哈夫曼树并将其实现。通过构建哈夫曼编码结构体来解决系列因编码带来的复杂问题。同时利用几个数组来存储字符出现的频率和种类。且在此过程中也用到了哈夫曼编码函数和哈夫曼构建函数等,因而使得整个程序繁而不乱有条不紊的编辑和运行在此次的学年设计中,对于构建哈夫曼树主要的思想是通过记录文件中字符的频率来作为在哈夫曼树构造中必不可少的权值,再根据权值来构造哈夫曼树,进而根据这棵建好的哈夫曼树来进行字符编码,并将其存储在所对应的文件中。参考文献严蔚敏,胡学刚数据结构语言版主调函数建立生成树并写入文件调试与操作说明读出文本输出哈夫曼树存储结构的初态输出哈夫曼树存储结构的终态输出哈夫曼树构成后的抽象图学年设计总结与体会参考文献
温馨提示:手指轻点页面,可唤醒全屏阅读模式,左右滑动可以翻页。
第 1 页 / 共 21 页
第 2 页 / 共 21 页
第 3 页 / 共 21 页
第 4 页 / 共 21 页
第 5 页 / 共 21 页
第 6 页 / 共 21 页
第 7 页 / 共 21 页
第 8 页 / 共 21 页
第 9 页 / 共 21 页
第 10 页 / 共 21 页
第 11 页 / 共 21 页
第 12 页 / 共 21 页
第 13 页 / 共 21 页
第 14 页 / 共 21 页
第 15 页 / 共 21 页
1、手机端页面文档仅支持阅读 15 页,超过 15 页的文档需使用电脑才能全文阅读。
2、下载的内容跟在线预览是一致的,下载后除PDF外均可任意编辑、修改。
3、所有文档均不包含其他附件,文中所提的附件、附录,在线看不到的下载也不会有。
1、该文档不包含其他附件(如表格、图纸),本站只保证下载后内容跟在线阅读一样,不确保内容完整性,请务必认真阅读。
2、有的文档阅读时显示本站(www.woc88.com)水印的,下载后是没有本站水印的(仅在线阅读显示),请放心下载。
3、除PDF格式下载后需转换成word才能编辑,其他下载后均可以随意编辑、修改、打印。
4、有的标题标有”最新”、多篇,实质内容并不相符,下载内容以在线阅读为准,请认真阅读全文再下载。
5、该文档为会员上传,下载所得收益全部归上传者所有,若您对文档版权有异议,可联系客服认领,既往收入全部归您。