网站大量收购闲置独家精品文档,联系QQ:2885784924

赫夫曼编译码器数据结构课程设计毕业设计(论文).doc

赫夫曼编译码器数据结构课程设计毕业设计(论文).doc

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

2749166188 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档