最简哈夫曼树简介_最简哈夫曼树个人资料_最简哈夫曼树微博_百科网
A-A+

最简哈夫曼树简介_最简哈夫曼树个人资料_最简哈夫曼树微博

2018-05-18 06:07:48 科学百科 阅读 1 次

 

树的由来/最简哈夫曼树 编辑

首先要了解树的概念。树并不是指植物,而是一种数据结构,因为其存放方式颇有点象一棵树有树叉因而称为树。

最简哈夫曼树
最简哈夫曼树
最简哈夫曼树是由德国数学家冯 哈夫曼 发现的,此树的特点就是引出的路程最短。它的形状单支形式。
数对于编程具有重大的意义,是某些看似不可能完成或是很难完成的任务较为简单,有条理的完成。

树的应用/最简哈夫曼树 编辑

#include<stdio.h>

最简哈夫曼树
最简哈夫曼树
#include<stdlib.h>
#include<string.h>
#include<conio.h>a
#include<graphics.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;i<2*n-1;i++)
        {if(i<n)  {hafftree[i].data=data[i];
     hafftree[i].weight=weight[i];   /*叶结点*/
           }
         else     {hafftree[i].weight=0;           /*非叶结点*/
     hafftree[i].data='';
     }
         hafftree[i].parent=0;                     /*初始化没有双亲结点*/
                              hafftree[i].flag=0;
         hafftree[i].leftchild=-1;
  sp;    hafftree[i].rightchild=-1;
                             }
   for(i=0;i<n-1;i++)                              /*构造哈夫曼树n-1个非叶结点*/