国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

數(shù)據(jù)結(jié)構(gòu):哈夫曼樹的應(yīng)用

2019-11-17 05:31:46
字體:
供稿:網(wǎng)友
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>a
#include<graphics.h>
#define MAXVALUE 200           /*權(quán)值的最大值*/
#define MAXB99v  30             /*最大的編碼位數(shù)*/
#define MAXNODE 30             /*初始的最大的結(jié)點數(shù)*/
 strUCt haffnode
         {char data;
   int weight;
                        int flag;
                        int parent;       /*雙親結(jié)點的下標(biāo)*/
                        int leftchild;    /*左孩子下標(biāo)*/
                        int rightchild;   /*右孩子下標(biāo)*/
         };
 struct haffcode
         {int bit[MAXNODE];
                        int start;        /*編碼的起始下標(biāo)*/
   char data;
   int weight;       /*字符權(quán)值*/
         }; 
/*函數(shù)說明*/
/************************************************************************/
void pPRintf(struct haffcode haffcode[],int n);
/*輸出函數(shù)*/
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);
/*測試函數(shù)*/
void end();
/*結(jié)束界面函數(shù)*/
/************************************************************************/ 
void haffmantree(int weight[],int n,struct haffnode hafftree[],char data[])
    /*建立葉結(jié)點個數(shù)為n,權(quán)值數(shù)組為weight[]的哈夫曼樹*/
    {int i,j,m1,m2,x1,x2;
     /*哈夫曼樹hafftree[]初始化,n個葉結(jié)點共有2n-1個結(jié)點*/
         for(i=0;i<2*n-1;i++)
        {if(i<n)  {hafftree[i].data=data[i];
     hafftree[i].weight=weight[i];   /*葉結(jié)點*/
           }
         else     {hafftree[i].weight=0;           /*非葉結(jié)點*/
     hafftree[i].data='/0';
     }
         hafftree[i].parent=0;                     /*初始化沒有雙親結(jié)點*/
                              hafftree[i].flag=0;
         hafftree[i].leftchild=-1;
                              hafftree[i].rightchild=-1;
                             }
   for(i=0;i<n-1;i++)                              /*構(gòu)造哈夫曼樹n-1個非葉結(jié)點*/
                            {m1=m2=MAXVALUE;
                             x1=x2=0;
        for(j=0;j<n+i;j++)
     {if(hafftree[j].weight<m1&&hafftree[j].flag==0)
                                         {m2=m1;
                                          x2=x1;
                                          m1=hafftree[j].weight;
                                          x1=j;
                                         }
      else if(hafftree[j].weight<m2&&hafftree[j].flag==0)
                                            {m2=hafftree[j].weight;
                                             x2=j;
                                            }
                                  }
                                  hafftree[x1].parent=n+i;
                                  hafftree[x2].parent=n+i;
                     


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 满洲里市| 东至县| 阿克| 双流县| 三原县| 岫岩| 无为县| 红桥区| 石渠县| 淳化县| 安义县| 拉萨市| 遵化市| 扎赉特旗| 宜兰市| 施秉县| 宜丰县| 宾阳县| 宜昌市| 客服| 门头沟区| 鹤岗市| 长宁区| 全椒县| 大渡口区| 呼和浩特市| 云林县| 台中市| 汉源县| 宣恩县| 乡城县| 宁德市| 鸡西市| 宝坻区| 新和县| 抚州市| 无锡市| 涡阳县| 苏尼特左旗| 富宁县| 峨边|