哈夫曼编译码__数据结构C语言版课程设计.docVIP

  • 8
  • 0
  • 约1.3万字
  • 约 21页
  • 2016-11-22 发布于贵州
  • 举报

哈夫曼编译码__数据结构C语言版课程设计.doc

哈夫曼编译码__数据结构C语言版课程设计

只要站起来的次数比倒下去的次数多,那就是成功。 《数据结构》 课程设计报告 设计题目 哈 夫 曼 (Huffman) 编/译 码 器    学院名称 信 息 工 程 学 院    专 业 班 级 12 计 本 2    姓 名 张 翠 翠    学 号 1212210217 ______ 题目:哈夫曼(Huffman)编/译码器 一、问题描述   利用哈夫曼编码进行通信可以大大提高信道利用率 缩短信息传输时间 降低传输成本 但是 这要求在发送端通过一个编码系统对待传数据预先编码 在接收端将传来的数据进行译码(复原) 对于双工信道(即可以双向传输信息的信道) 每端都需要一个完整的编/译码系统 试为这样的信息收发站写一个哈夫曼码的编/译码系统    二、设计目标   帮助学生熟练掌握树的应用和基本操作 重点掌握二叉树的存储 这里以哈夫曼树为设计目标进一步提高学生的设计能力及对树的理解 三、任务要求   一个完整的系统应具有以下功能:    1) I:初始化(Initialization) 从终端读入字符集大小n 以及n个字符和n个权值 建立哈夫曼树 并将它存于文件hfmTree中    2) E:编码(Encoding) 利用以建好的哈夫曼树(如不在内存 则从文件hfmTree中读入) 对文件ToBeTran中的正文进行编码 然后将结果存入文件CodeFile中   3) D:译码(Decoding) 利用已建好的哈夫曼树将文件CodeFile中的代码进行译码 结果存入文件TextFile中   4) P:印代码文件(Print) 将文件CodeFile以紧凑格式显示在终端上 每行50个代码 同时将此字符形式的编码文件写入文件CodePrin中   5) T:印哈夫曼树(Tree Printing) 将已在内存中的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上 同时将此字符形式的哈夫曼树写入文件TreePrint中    四、需求分析   利用哈夫曼树(Huffman)编/译码 (一)、初始化哈夫曼树 (二)、建立哈夫曼树 (三)、对哈夫曼树进行编码 (四)、输出对应字符的编码 (五)、译码过程 五、概要设计  哈夫曼树的存储结构描述 typedef struct { unsigned int weight; unsigned int parent lchild rchild; }HTNode *HuffmanTree; 哈弗曼树的算法 void CreateHT(HTNode ht[] int n) //调用输入的数组ht[] 和节点数n { int i k lnode rnode; int min1 min2; for (i=0;i2*n-1;i++) ht[i].parent=ht[i].lchild=ht[i].rchild=-1; //所有结点的相关域置初值-1 for (i=n;i2*n-1;i++) //构造哈夫曼树 { min1=min2=32767; //int的范围是-32768-32767 lnode=rnode=-1; //lnode和rnode记录最小权值的两个结点位置 for (k=0;k=i-1;k++) { if (ht[k].parent==-1) //只在尚未构造二叉树的结点中查找 { if (ht[k].weightmin1) //若权值小于最小的左节点的权值 { min2=min1;rnode=lnode; min1=ht[k].weight;lnode=k; } else if (ht[k].weightmin2) { min2

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档