哈夫曼编码译码系统

哈夫曼编码译码系统

ID:47475747

大小:223.43 KB

页数:39页

时间:2020-01-11

哈夫曼编码译码系统_第1页
哈夫曼编码译码系统_第2页
哈夫曼编码译码系统_第3页
哈夫曼编码译码系统_第4页
哈夫曼编码译码系统_第5页
资源描述:

《哈夫曼编码译码系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《数据结构》课程设计6.5电文的编码和译码姓名:XXX院系:计算机学院专业:计算机科学与技术年级:13级学号:E11314XXX指导教师:XXX2015年10月30日39/39目录1.课程设计的目的32.需求分析33电文的编码和译码的设计33.1概要设计33.1.1主界面设计33.1.2存储结构43.1.3系统功能设计43.2详细设计43.2.1系统子程序及功能设计43.2.2数据类型定义63.2.3系统主要子程序详细设计73.3调试分析113.4用户手册124总结125、程序清单:(见附录)127、程序运行结果12附录11839/391.

2、课程设计的目的(1)熟练使用C语言编写程序,解决实际问题;(2)了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;(3)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;(4)提高综合运用所学的理论知识和方法独立分析和解决问题的能力。2.需求分析(1)为信息收发站写一个哈夫曼编/译码系统。(2)要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。(3)要求可以将哈夫曼树以树状或凹入法打印到屏幕。3电文的编码和译码的设计3.1概要设计3.1.1主界面设计图1主界面,如图

3、1所示,包含初始化,编码,译码,代码文件,哈夫曼树五个菜单。其中,菜单1用来从终端读入n个字符和n个权值,建立哈夫曼树,并将它存于文件中;菜单2用来利用已建好的哈夫曼树,对文件中或直接输入的正文进行编码,然后将结果存入文件中,如果哈夫曼树不在内存可通过初始化或文件读入到内存;菜单3利用已建好的哈夫曼树将文件中的代码进行译码,译码结果存入文件中,若哈夫曼树不在内存中,处理方式与菜单2相同;菜单4将编码文件以紧凑格式显示在终端上,每行50个代码,同时将此字符形式的编码写入文件中;菜单5将已在内存中的哈夫曼树以凹入法显示在终端上。39/393.1

4、.2存储结构这里使用了4个结构体。结构体HTNode存放哈夫曼树的结点,包含权值weight,以及父节点parent、左孩子lchild、右孩子rchild所在位置。结构体Huffmantree保存哈夫曼树,其中num是结点数,参与哈夫曼编码的各个字符alphabet[],hftree[]是HTNode类型存放构建的哈夫曼树的表,HCnum[]是每个字符编码的长度,HC[][]是编码字符数组。结构体Text保存正文,其中num存放正文的长度,content存放正文内容。Code存放编码结果,num是编码长度,bin是编码内容。3.1.3系统

5、功能设计本系统的功能描述如下:1可输入字符和其对应的权值,以构建哈夫曼树。2可输入或读入正文,根据构建的哈夫曼树,对正文进行编码,若哈夫曼树未存在,可从文件中读入或者初始化输入,若正文中字符在哈夫曼树中不存在,则会提示编码出错。3可读入编码文件,根据存在的哈夫曼树,对文件进行解码,若哈夫曼树不存在会进行和2一样的操作,若解码时,编码在哈夫曼树中不存在,则提示解码出错。4可根据内存中的哈夫曼树用凹入表示法输出树形界面。3.2详细设计3.2.1系统子程序及功能设计本系统设置32个函数,函数名及功能说明如下:voidHufftreeInit(Hu

6、ffmantree&H)//对结构体Huffmantree初始化voidHufftreeMalloc(Huffmantree&H,intnum)//给结构体Huffmantree分配空间voidTextInit(Text&c)//结构体Text初始化voidTextMalloc(Text&c,intnum)//给结构体Text分配存储空间voidCodeInit(Code&co)//给结构体code初始化voidCodeMalloc(Code&co,intnum)//给结构体code分配存储空间intinputselection(intn)

7、//输入菜单选择,返回值为输入的选项intTreeRead(Huffmantree&H)//读取哈夫曼树文件intTreeSave(HuffmantreeH)//保存结构体HuffmantreeintTextSave(Textc)//保存结构体TextintTextRead(Text&c)//读取结构体TextintCodeSave(Code&co)//保存结构体CodeintCodeSave2(Code&co)//以紧凑形式保存结构体Code39/39intCodeRead(Code&co)//读取结构体Codeintistrue()//

8、判断是否输入了Yvoidexchange(ints[])//交换s[0]和s[1]中的内容voidSelect(HTNodeHT[],inti,ints[])//找到parent

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

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

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