- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课 程 设 计 任 务 书
课程名称 数据结构课程设计
课 题 赫夫曼编译码器
专业班级 网络工程***
学生姓名 ***
学 号 **
指导老师
审 批
任务书下达日期: 2011 年 6 月 26 日
任务完成日期: 2011 年 7 月 15 日
一、设计内容
1)问题描述
对输入的一串电文字符实现赫夫曼编码,再对赫夫曼编码生成的代码串进行译码,输出电文字符串。
2)基本要求
a.初始化,键盘输入字符集大小n,n个字符和n个权植,建立哈夫曼树。
b.编码,利用建好的huffman树生成huffman编码;
c.输出编码;
d.译码功能;
e.字符和频度如下: n,n个字符和n个权植,建立哈夫曼树。
编码,利用建好的huffman树生成huffman编码;
输出编码;
译码功能;
b.输入输出的要求。
2)概要设计
程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能。
void main()
void tohuffmancode(int n)//编码部分
void decode(char ch[],huftree tree[],int n)//译码
void huffman(huftree tree[],int *w,int n) //生成huffman树
void select(huftree tree[],int k) //找寻parent为0,权最小的两个节点
void huffmancode(huftree tree[],char code[],int n)//输出huffman编码
其流程图如下:
主函数main 调用其他函数:
tohuffmancode(int n)
decode(char ch[],huftree tree[],int n)
huffman(huftree tree[],int *w,int n)
select(huftree tree[],int k)
huffmancode(huftree tree[],char code[],int n)
其主流程图如下:
(3)主要模块程序流程图
下面介绍三个主要的程序模块流程图:
函数流程图:
流程图注释:
该图比较简单,主要是调用各个函数模块,首先代开已经存在的文件,然后统计总的字符数以及出现的各个字符和频率。然后才开始建立哈夫曼树,接着在哈夫曼树的基础上对其进行编码,编码之后才是译码。最后输出结束。
②构造哈夫曼树:
流程图注释:
该图是表示构造哈夫曼树的过程。首先输入num个叶结点的权值,当i=num是循环结束。然后进行哈夫曼树的构建,当i=2*num-1是循环结束。最后输出所得到的字符统计情况。
③哈夫曼编码:
流程图解释:
该流程图表四哈夫曼编码情况。首先初始化,Cd[--start]=0,start=num。然后进行
编码,使用了一个三目运算符。cd[--start]=(T[p].lchild==c) ? 0 : 1,即当cd[--start]=T[p].lchild= =c时,cd[--start]=0;当cd[--start]=T[p].lchild!= =c时,cd[--start]=1。这个编码循环一直到i=num时结束。
课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。
有线性结构、树形结构Char int 还有数据体结构 链表结构 等等。
写出各模块的类C码算法。
void main()//主函数
{
int i=0,n=0;
int *w,weight[MAX];
char code[MAX];
huftree tree[MAX];
char in;
while (in!=5)
{
cout ---------------哈夫曼编码-------------endlendl;
cout1 建立初始化哈夫曼树 2 输出哈夫曼编码 3 编码 4 译码 5 退出endlendl;
cout请输入(1--5):;cinin;
coutendl;
swit
您可能关注的文档
- (最全)基于PLC应用技术的十字路口红绿灯课程设计word格式毕业设计(论文).doc
- 《动态页面设计与实现》课程讲义毕业设计(论文).doc
- 网络实验室方案的设计与实现毕业设计(论文).doc
- 图片尺寸批量修改工具java课程设计毕业设计(论文).doc
- 温度传感器课程设计报告毕业设计(论文).doc
- 霓虹灯控制电路设计报告毕业设计(论文).doc
- 基于AT89C52单片机的小区门禁系统word格式毕业设计(论文).doc
- 简易彩灯控制器电路课程设计毕业设计(论文).doc
- 基于单片机的防盗报警器课程设计报告毕业设计(论文).doc
- 学生成绩管理应用程序设计C语言课设毕业设计(论文).doc
文档评论(0)