数据结构:哈夫曼树的应用

2016-02-19 15:54 9 1 收藏

今天给大家分享的是由图老师小编精心为您推荐的数据结构:哈夫曼树的应用,喜欢的朋友可以分享一下,也算是给小编一份支持,大家都不容易啊!

【 tulaoshi.com - 编程语言 】

#includestdio.h
  #includestdlib.h
  #includestring.h
  #includeconio.ha
  #includegraphics.h
  #define MAXVALUE 200           /*权值的最大值*/
  #define MAXB99v  30             /*最大的编码位数*/
  #define MAXNODE 30             /*初始的最大的结点数*/
   strUCt haffnode
           {char data;
     int weight;
                          int flag;
                          int parent;       /*双亲结点的下标*/
                          int leftchild;    /*左孩子下标*/
                          int rightchild;   /*右孩子下标*/
           };
   struct haffcode
           {int bit[MAXNODE];
                          int start;        /*编码的起始下标*/
     char data;
     int weight;       /*字符权值*/
           }; 
  /*函数说明*/
  /************************************************************************/
  void pprintf(struct haffcode haffcode[],int n);
  /*输出函数*/
  void haffmantree(int weight[],int n,struct haffnode hafftree[],char data[]);
  /*建立哈夫曼树*/
  void haffmancode(struct haffnode hafftree[],int n,struct haffcode haffcode[]);
  /*求哈夫曼编码*/
  void test(struct haffcode haffcode[],int n);
  /*测试函数*/
  void end();
  /*结束界面函数*/
  /************************************************************************/ 
  void haffmantree(int weight[],int n,struct haffnode hafftree[],char data[])
      /*建立叶结点个数为n,权值数组为weight[]的哈夫曼树*/
      {int i,j,m1,m2,x1,x2;
       /*哈夫曼树hafftree[]初始化,n个叶结点共有2n-1个结点*/
           for(i=0;i2*n-1;i++)
          {if(in)  {hafftree[i].data=data[i];
       hafftree[i].weight=weight[i];   /*叶结点*/
             }
           else     {hafftree[i].weight=0;           /*非叶结点*/
       hafftree[i].data='

来源:http://www.tulaoshi.com/n/20160219/1610683.html

延伸阅读
树 因为现实世界中存在这“树”这种结构——族谱、等级制度、目录分类等等,而为了研究这类问题,必须能够将树储存,而如何储存将取决于所需要的操作。这里有个问题,是否答应存在空树。 !-- frame contents -- !-- /frame contents -- 有些书认为树都是非空的,因为树表示的是一种现实结构,而0不是自然数;我用过的...
标签: ASP
  /*数据结构*/ /*bbs用户表*/ if exists(select * from sysobjects where id = object_id('BBSUser')) drop table BBSUser go create table BBSUser ( id int identity primary key , UserName varchar(20) default '' not null , Password varchar(10) default '' not null , Email varchar(100) default '' not null , Homepage var...
标签: ASP
  /*************************************************************************/ /* */ /* procedure : up_GetPostedTopicList */ /* */ /* Description: 精华区贴子列表 */ /* */ /* Parameters: @a_intForumID : 版面id */ /* @a_intPageNo: 页号 */ /* @a_intPageSize: 每页显示数,以根贴为准 */ /* */ /* Use table: bbs , forum *...
标签: ASP
  /*************************************************************************/ /* */ /* procedure : up_GetForumList */ /* */ /* Description: 取得版面列表 */ /* */ /* Parameters: None */ /* */ /* Use table: forum , bbsuser */ /* */ /* Author: bigeagle@163.net */ /* */ /* Date: 2000/2/10 */ /* */ /* History: */ /* *...
3. 把中缀表达式转换为后缀表达式的算法     设以’@’字符作为结束符的中缀算术表达式已经保存在s1字符串中,转换后得到的后缀算术表达式拟存于s2字符串中。由中缀表达式转换为后缀表达式的规则可知:转换前后,表达式中的数值项的次序不变,而运算符的次序发生了变化,由处在两个运算对象的中间变为处在两个运算对象的后面...

经验教程

841

收藏

45
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部