文档介绍:软件学院课程设计报告书课程名称数据结构设计题目哈夫曼编码译码器专业班级学号姓名指导教师2014年1月目录一、设计时间----------------------------------1二、设计目的----------------------------------1三、设计任务----------------------------------1四、设计内容----------------------------------1-111、需求分析2、总体设计3、详细设计4、测试与分析5、附录五、总结与展望--------------------------------11六、参考文献----------------------------------121设计时间:——:哈夫曼编码译码程序有着广泛的应用,例如在压缩和解压时都会用到译码和解码,所以应当学会编制完成哈夫曼编码译码程序。3设计任务:从键盘输入电文字符能输出对应的哈夫曼编码。同时,能翻译由哈夫曼编码生成的代码串,输出相应的电文字符串。4设计内容:、程序所能达到的功能:从键盘输入一串电文字符能输出对应的哈夫曼编码。同时,能翻译由哈夫曼编码生成的代码串,输出相应的电文字符串。2、输入的形式和输入值的范围:编码:输入大写英文A—Z;译码:输入数字0,13、输出的形式:代输出数字0,1码;输出大写A—Z4、测试数据:请输入要进行的字符串(以#结束):APPLE#输出编码结果:11011110000000000**********请输入编码(以#结束):10101011#,采用多分支程序设计语句switch()使程序产生不同的流向,从而达到实现课程设计的各个要求。各程序模块之间的层次(调用):structHTnode{intweight;//当前统计的字符的个数intparent;intlchild;intrchild;chardata;charcode[SIZE];};HTnode*HT;typedef struct{    HTNode arr[MAX_NODE];     int total;} HTree;算法描述本题需包含几个函数,其算法的描述依次如下:putef()//将要编码的字符串中的字符逐一写入文件voidselect(HTnode*HT,intend,int&s1,int&s2){/*      在HT[1..k]中选择parent为0且权值最小的两个根结点,其序号分别为s1和s2,并靠引用参数带回主调函数*/  } voidInit()//初始化{ 建立一棵赫夫曼树数据初始化;并把每一个结点都建立成一棵只包含它自己的树,找到当前权值最小的两个结点,并把它们建立成一棵新树,其中树根的 权值为这两个的权值的和 } /*    对字符进行编码    */voidEncoding()//编码{判断要编码的文件是否存在   while(条件判断)        }voidDecording()//译码{对赫夫曼树进行译码,并写入文件}voidPrinting()//打印输出代码文件{//打印输出代码文件}voidTreePrint()//打印赫夫曼树(树形){//判断是否为空树,否的话返回;不是的话,按照先输出左孩子,然后输出双亲,再输出右孩子的方法依次打印各个字符和它的权值。},自己加以进行改动。#include""#include""#defineMAXVALUE1000/*定义最大权值*/#defineMAXLEAF30/*定义哈夫曼树叶结点个数*/#defineMAXNODEMAXLEAF*2-1#defineMAXBIT30/*定义哈夫曼编码的最大长度*/typedefstruct{intbit[MAXBIT];intstart;}HCODETYPE;typedefstruct{intweight;intparent;intlchild;intrchild;}HNODETYPE;char*getcode1(char*s1,char*s2,char*s3)/*首先去掉电文中的空格*/{chartemp[128]="",*p,*q;p=s1;while((q