哈夫曼树及哈夫曼编码译码的实现 福建农林大学.docVIP

  • 8
  • 0
  • 约5.84千字
  • 约 12页
  • 2018-10-11 发布于重庆
  • 举报

哈夫曼树及哈夫曼编码译码的实现 福建农林大学.doc

哈夫曼树及哈夫曼编码译码的实现 福建农林大学

7 -         福建农林大学计算机与信息学院    (程序设计类课程)    实验报告        课程名称:    数据结构   姓 名:   吴秋月   系:   计算机   专 业:   计算机科学与技术(专升本)   年 级:   2008级   学 号:    081806111  指导教师:    黄思先    职 称:    副教授              福建农林大学计算机与信息学院实验报告  系: 计科(专升本) 专业: 计算机科学与技术 年级: 08级   姓名: 吴秋月 学号: 081806111 实验室号:__田514 计算机号: 18        实验二 哈夫曼树及哈夫曼编码译码的实现     一、实验目的和要求  1,掌握树及二叉树的基本概念  2,熟悉二叉树的运算和应用   3,理解哈夫曼树的概念及哈夫曼编码译码的实现   二、实验内容和原理  实验内容:  输入一个电文字符串,构造出哈夫曼树并实现该字符串的二进制输出,并统计该字符串中的字符总数目及二进制编码的总长度。  实验原理:  哈夫曼树是由n个带权叶子结点构成的所有二叉树中带权路径长度WPL最小的二叉树。本实验中,要输入电文字符以及它的权值,用Hunffman算法构建哈夫曼树。定义一个存储哈夫曼编码结果的二维数组。为使每一个字符编码都不是另一个字符编码的前缀,规定哈夫曼树中左分枝以“0”编码,右分枝以“1”编码。    三、实验环境       硬件环境:   多媒体实验室   学生用微机   局域网环境   软件环境:   Windows xp professional   Turbo C/C++ for windows   四、算法描述及实验步骤   1,算法描述                   ht [0] [1] [2] [3] [4] [5] [6] [7]         eq \o\ac(○,3)    eq \o\ac(○,4)  eq \o\ac(○,2)   eq \o\ac(○,10)   5  9    19                3    2    6               1  5  4      5  6  5  7  6    7      w   lch    rch    parent 3,4 ,2,10为叶子权值。  a    b  c    d   3    2  3  1  0  1   1     0  0         0    1    0     1            ch            code       star star star star  2,算法描述及实验步骤  在Turbo C/C++ for windows新建名为huffman.c的c程序项目,然后进行编译调试,若编译链接都通过,则运行程序,得出正确结果。正确的程序代码如下所示:  #include stdio.h   #include conio.h    #include string.h   #define N0 10   typedef struct node1  { int w,lch,rch,parent;    }HFT[2*N0-1+1]; // 哈夫曼树结点的数据类型   HFT ht;  struct node2    { char ch;    int start;  int code[N0];  }hc[N0+1]; // 字符的哈夫曼编码信息的数据类型     int n,m;   void select(in

文档评论(0)

1亿VIP精品文档

相关文档