[页数] 15 [字数] 2091 [目录] 1.需求分析 2.概要设计 3.详细设计 4.调试分析 5.测试结果及运行效果 参考文献 附录 全部代码 [原文] 题目一:哈夫曼树的应用 1.需求分析 利用哈夫曼编码进行信息通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码。本次设计就是为哈夫曼树求出各符号的编码。 (1) 输入的形式:数字 输入值的范围:大于1的数字 (2) 输出的形式:见运行结果 本演示程序中,用户可以输入键盘中的任意字符,长度为任意长,字符输入顺序不限,且允许出现重码。演示程序以用户与计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令,相应的输入数据和运算结果显示在其后。 本演示程序中,当用户输入错误时,系统会输出相应的提示。 (3) 程序所能达到的功能: 读入各个符号及其权值,建立哈夫曼树;利用建立的哈夫曼树对各符号进行编码,输出编码结果。 2.概要设计 为实现上述程序功能,应以指针存储结点。为此,需要定义一个抽象数据类型。 ADT HuffmanTree{ HuffmanTree(); 构造函数 本程序的模块: 1) 主程序模块: Void main( ){ 初始化; for( ) } 2) 建树模块 各模块之间的调用关系如下: 主程序模块 建树模块 3.详细设计 由于哈夫曼树中没有度为1的结点,则一颗有n个叶子结点的哈夫曼树共有2n-1个结点,可以存储在一个大小为2n-1的一维数组中。由于在构成哈夫曼树之后,为求编码需从叶子结点出发走一条从叶子到根的路径;而为译码需从根出发走一条从根到叶子的路径。则对每个结点而言,既需知双亲的信息,又需知孩子结点的信息。 向量HT的前n个分量表示叶子结点,最后一个分量表示根结点。各字符的编码长度不等,所以按实际长度动态分配空间。我的算法中,求每个字符的哈夫曼编码是从叶子到根逆向处理的。 主函数用伪代码表示的算法: 开始 置HT的初值为NULL 置HC的初值为NULL 置*w的初值为NULL 输出Please input n:...... [参考文献] [1] 严蔚敏 吴伟民著.《据结构(C语言版),清华大学出版, 1999年第一版 [2] 陈一华等编.数据结构---使用C 语言,电子科技大学出版社, 1998年第一版 [3] 谭浩强.C语言程序设计(第二版).北京:高等教育出版社,2002 [原文截取] 目录 题目一:哈夫曼树的应用.........................................1 1.需求分析.................................................1 2.概要设计.................................................1 3.详细设计.................................................1 4.调试分析.................................................4 5.测试结果及运行效果.......................................5 参考文献...................................................7 附录 全部代码..............................................8 题目一:哈夫曼树的应用 1.需求分析 利用哈夫曼编码进行信息通信可以大大提高信道利用率,缩短信息传输时..... |
哈夫曼树的应用课程设计
查看评论
已有0位网友发表了看法