亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

霍夫曼樹編碼的實現

2019-09-06 23:33:33
字體:
來源:轉載
供稿:網友

                    #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

typedef struct
{
   unsigned int Weight;
   unsigned int Parent;
   unsigned int lChild;
   unsigned int rChild;
}HTNode,*HuffmanTree;

typedef char **HuffmanCode;

int LookFor(char *str,char letter,int count);
void OutputWeight(char *Data,int Length,
/t/t  char **WhatLetter,
/t/t  int **Weight,int *Count);
void HuffmanCoding(HuffmanTree *HT,
/t/t   HuffmanCode *HC,
/t/t   int *Weight,
/t/t   int Count);
void Select(HuffmanTree HT,int Count,int *s1,int *s2);
int main()
{
   HuffmanTree HT;
   HuffmanCode HC;
   char Data[100];
   char *WhatLetter;
   int *Weight;
   int Count;
   int i;

   printf("Please input the line:");
   /* Example: aaaaaaaaaaaaaabcccccc*/
   scanf("%s",Data);
   printf("");

   OutputWeight(Data,strlen(Data),
/t/t &WhatLetter,
/t/t &Weight,
/t/t &Count);

   HuffmanCoding(&HT,&HC,Weight,Count);

   printf(" Letter Weight Code");
   for(i=0;i<Count;i++)
   {
/tprintf(" %c ",WhatLetter);
/tprintf("%d ",Weight);
/tprintf("%s",HC[i+1]);
   }
   printf("");
   getch();
   return 0;
}

void HuffmanCoding(HuffmanTree *HT,
/t/t   HuffmanCode *HC,
/t/t   int *Weight,
/t/t   int Count)
{
   int i;
   int s1,s2;
   int TotalLength;
   HuffmanTree p;
   char* cd;
   unsigned int c;
   unsigned int f;
   int start;

   if(Count<=1) return;
   TotalLength=Count*2-1;
   (*HT)=(HuffmanTree)malloc((TotalLength+1)*sizeof(HTNode));

   p=((*HT)++);
   for(i=1;i<=Count;i++)
   {
/t(*HT).Parent=0;
/t(*HT).rChild=0;
/t(*HT).lChild=0;
/t(*HT).Weight=(*Weight);
/tWeight++;
   }
   for(i=Count+1;i<=TotalLength;i++)
   {
/t(*HT).Weight=0;
/t(*HT).Parent=0;
/t(*HT).lChild=0;
/t(*HT).rChild=0;
   }
   /*///////////////////Create HuffmanTree////////////////*/
   for(i=Count+1;i<=TotalLength;++i)
   {
/tSelect((*HT),i-1,&s1,&s2);
      (*HT)[s1].Parent=i;
      (*HT)[s2].Parent=i;
      (*HT).lChild=s1;
      (*HT).rChild=s2;
      (*HT).Weight=(*HT)[s1].Weight+(*HT)[s2].Weight;
   }
   /*///////////////////Output Huffman Code///////////////*/
   (*HC)=(HuffmanCode)malloc((Count+1)*sizeof(char*));
   cd=(char*)malloc(Count*sizeof(char));
   cd[Count-1]='';
   for(i=1;i<=Count;++i)
   {
/tstart=Count-1;
/tfor(c=i,f=(*HT).Parent;f!=0;c=f,f=(*HT)[f].Parent)
/t{
/t    if((*HT)[f].lChild==c)
/t/tcd[--start]='0';
/t    else
/t/tcd[--start]='1';
/t    (*HC)=(char*)malloc((Count-start)*sizeof(char));
/t    strcpy((*HC),&cd[start]);
/t}
   }
}
void Select(HuffmanTree HT,int Count,int *s1,int *s2)
/*/(*s1) is smallest,(*s2) is smaller.*/
{
   int i;
   unsigned int temp1=0;
   unsigned int temp2=0;
   unsigned int temp3;
   for(i=1;i<=Count;i++)
   {
/tif(HT.Parent==0)
/t{
/t    if(temp1==0)
/t    {
/t/ttemp1=HT.Weight;
/t/t(*s1)=i;
/t    }
/t    else
/t    {
/t/tif(temp2==0)
/t/t{
/t/t    temp2=HT.Weight;
/t/t    (*s2)=i;
/t/t    if(temp2<temp1)
/t/t    {
/t/t/ttemp3=temp2;
/t/t/ttemp2=temp1;
/t/t/ttemp1=temp3;

/t/t/ttemp3=(*s2);
/t/t/t(*s2)=(*s1);
/t/t/t(*s1)=temp3;
/t/t    }
/t/t}
/t/telse
/t/t{
/t/t    if(HT.Weight<temp1)
/t/t    {
/t/t/ttemp2=temp1;
/t/t/ttemp1=HT.Weight;

/t/t/t(*s2)=(*s1);
/t/t/t(*s1)=i;
/t/t    }
/t/t    if(HT.Weight>temp1&&HT.Weight<temp2)
/t/t    {
/t/t/ttemp2=HT.Weight;
/t/t/t(*s2)=i;
/t/t    }
/t/t}
/t    }
/t}
   }
}

int LookFor(char *str,char letter,int count)
{
   int i;
   for(i=0;i<count;i++)
   {
/tif(str==letter) return i;
   }
   return -1;
}
void OutputWeight(char *Data,int Length,
/t/t  char **WhatLetter,
/t/t  int **Weight,int *Count)
{
   int i;
   char* Letter=(char*)malloc(Length);
   int* LetterCount=(int *)malloc(Length);
   int AllCount=0;
   int Index;
   int Sum=0;
   float Persent=0;

   for(i=0;i<Length;i++)
   {
/tif(i==0)
/t{
/t    Letter[0]=Data;
/t    LetterCount[0]=1;
/t    AllCount++;
/t}
/telse
/t{
/t    Index=LookFor(Letter,Data,AllCount);
/t    if(Index==-1)
/t    {
/t/tLetter[AllCount]=Data;
/t/tLetterCount[AllCount]=1;
/t/tAllCount++;
/t    }
/t    else
/t    {
/t/tLetterCount[Index]++;
/t    }
/t}
   }
   for(i=0;i<AllCount;i++)
   {
/tSum=Sum+LetterCount;
   }
   (*Weight)=(int*)malloc(AllCount);
   (*WhatLetter)=(char*)malloc(AllCount);

   for(i=0;i<AllCount;i++)
   {
/tPersent=(float)LetterCount/(float)Sum;
/t(*Weight)=(int)(1000*Persent);
/t(*WhatLetter)=Letter;
   }
   (*Count)=AllCount;
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久国产视频网站| 欧美激情亚洲国产| 成人黄色免费网站在线观看| 欧美视频中文在线看| 精品久久久久久久久中文字幕| 国产成人免费av| 日韩美女福利视频| 欧美精品在线极品| 夜夜嗨av色综合久久久综合网| 中文字幕日韩综合av| 亚洲激情视频网| 欧美激情在线观看视频| 日韩av成人在线| 一区二区三区精品99久久| 亚洲一区av在线播放| 98精品在线视频| 日本高清久久天堂| 国产自摸综合网| …久久精品99久久香蕉国产| 亚洲午夜色婷婷在线| 欧美电影免费观看网站| 欧美日韩国产在线看| 亚洲 日韩 国产第一| 国产香蕉精品视频一区二区三区| 91精品视频专区| 俺去了亚洲欧美日韩| 国产精品网站视频| 欧美成年人视频网站| 国内免费久久久久久久久久久| 亚洲乱码国产乱码精品精天堂| 日韩免费看的电影电视剧大全| 久久网福利资源网站| 超碰97人人做人人爱少妇| 久久久之久亚州精品露出| 欧美性xxxxx极品娇小| 日韩大陆毛片av| 韩国v欧美v日本v亚洲| 正在播放欧美视频| 亚洲亚裔videos黑人hd| 国产亚洲精品久久久久久777| 国产精品夫妻激情| 欧美裸体xxxx| 欧美日韩亚洲精品一区二区三区| 日韩在线观看你懂的| 亚洲欧美在线第一页| 91香蕉电影院| 欧美成人激情在线| 国产第一区电影| 国产精品∨欧美精品v日韩精品| 日本一欧美一欧美一亚洲视频| 日本欧美中文字幕| 精品久久久久久久久久久久久| 91视频-88av| 久久69精品久久久久久国产越南| 国产精品成人观看视频国产奇米| 亚洲mm色国产网站| 中文字幕最新精品| 亚洲毛片在线免费观看| 欧美高清性猛交| 国产一区二区三区高清在线观看| 亚洲精品日韩激情在线电影| 欧美性感美女h网站在线观看免费| 欧美激情一区二区三区久久久| 精品国产依人香蕉在线精品| 日本不卡免费高清视频| 高清日韩电视剧大全免费播放在线观看| 日韩中文字幕视频| 国产精品一区二区久久精品| 国产91精品网站| 性色av一区二区三区免费| 亚洲а∨天堂久久精品9966| 久久久亚洲福利精品午夜| 亚洲激情 国产| 亚洲欧美国产高清va在线播| 日韩免费在线看| 亚洲视频在线观看免费| 91干在线观看| 91久久在线播放| 91久久国产综合久久91精品网站| 91高清视频免费| zzijzzij亚洲日本成熟少妇| 亚洲自拍偷拍色片视频| 亚洲天堂av电影| 欧美高清自拍一区| 国产在线观看精品一区二区三区| 亚洲激情中文字幕| 亚洲欧美在线一区二区| 91大神福利视频在线| 中文字幕成人在线| 日韩中文字幕国产| 亚洲欧洲在线视频| 91九色视频导航| 红桃av永久久久| 成人黄色片在线| 国产精品丝袜久久久久久高清| 国产精品久久一| 国产午夜精品一区理论片飘花| 色综合色综合网色综合| 欧美激情免费观看| 久久免费视频观看| 久久免费国产精品1| 91日本在线观看| 国产伦精品免费视频| 视频在线观看一区二区| 欧美日韩一区二区免费在线观看| 亚洲精品国产综合区久久久久久久| 亚洲成人网在线观看| 国产精品久久久久久久久男| 黄网动漫久久久| 欧美一区二区三区四区在线| 川上优av一区二区线观看| 91久久久亚洲精品| 日韩免费在线看| 91久久国产婷婷一区二区| 亚洲天堂免费视频| 欧美最猛性xxxxx(亚洲精品)| 欧美性xxxx极品hd欧美风情| 最近2019中文免费高清视频观看www99| 欧美成人黑人xx视频免费观看| 2021国产精品视频| 97精品视频在线播放| 国产精品视频一区二区三区四| 国产一区二区三区日韩欧美| 亚洲电影免费观看高清完整版在线观看| 超碰97人人做人人爱少妇| 欧美韩日一区二区| 成人久久精品视频| 亚洲电影免费观看| 久久久久久久久久久av| 欧美激情在线视频二区| 性欧美亚洲xxxx乳在线观看| 欧美激情在线视频二区| 91精品国产自产91精品| 亚洲国产精品久久91精品| 日韩免费中文字幕| 亚洲福利小视频| 欧美日韩国产成人在线| 日韩在线国产精品| 91在线精品视频| 欧美性xxxxhd| 97在线视频观看| 国产成人精品日本亚洲| 成人午夜在线视频一区| 91精品国产自产在线观看永久| 超在线视频97| 668精品在线视频| 色av吧综合网| 欧美电影免费观看网站| 国产精品高清在线| 国产精品久久久久高潮| 欧美一级大片在线免费观看| 国产精品99久久99久久久二8| 日韩欧美国产中文字幕| 精品人伦一区二区三区蜜桃免费| 97热在线精品视频在线观看| 亚洲欧美日韩爽爽影院| 欧美人交a欧美精品| 欧美激情视频免费观看| 亚洲人成电影在线| 91精品国产沙发| 亚洲图片在线综合| 中文字幕日韩综合av| 国产精品偷伦视频免费观看国产| 国产精品久久久久久婷婷天堂|