亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? huffman.txt

?? 建立完整的赫夫曼樹
?? TXT
字號(hào):
#include<stdio.h>
#include<malloc.h>
#include<string.h>

#define MAXSIZE 100  //所能編譯字符最大個(gè)數(shù)
#define NULL 0
#define ERROR -1
#define TRUE 1
#define FALSE 0
#define OK 1
#define INFINITY  1000000 //最大權(quán)值

typedef char TElemType;
typedef int  Status;
typedef char** HuffmanCode;//動(dòng)態(tài)分配數(shù)組存儲(chǔ)赫夫曼編碼表
typedef char* huffmanCode;



struct Data{
 TElemType  data;
 int w;//權(quán)值
};





typedef struct {
 TElemType data ;//儲(chǔ)存信息字符類型
 unsigned int weight;//權(quán)值
 unsigned int parent, lchild, rchild;//左右孩子及雙親儲(chǔ)存位置
} HTNode, *HuffmanTree;//動(dòng)態(tài)分配數(shù)組存儲(chǔ)赫夫曼樹


void    InitData(struct Data *m,int n){
 m=(struct Data*)malloc((n+1)*sizeof(Data));
 for( int i=1;i<=n;++i){
  m[i].w=0;
   m[i].data=NULL;
 }
}


//定義 Select函數(shù)
void Select(HuffmanTree HT,int n,int &s1,int &s2){

	int i;
	int k1=INFINITY ;//始終記錄較小的權(quán)值
	for( i=n;i>=1;--i){
		if(!HT[i].parent){
			if(HT[i].weight<=k1) {
				s1=i;
				k1=HT[i].weight;
				//printf("%d",s1);
			}//if
		}//if
	}//for

	//printf("\n");


    int k2=INFINITY ;//始終記錄較小的權(quán)值
	for(int j=1;j<=n;++j){
		if(!HT[j].parent&&j!=s1){
			if(HT[j].weight<=k2) {
				k2=HT[j].weight;
				s2=j;
				//printf("%d",s2);
			}
		}
	}
}




Status Huffmacoding( HuffmanTree &HT,HuffmanCode &HC,struct Data  w[],  int n ){
 //w存放n個(gè)字符的權(quán)值,構(gòu)造赫夫曼樹HT,并求出n個(gè)字符的編碼HC
	int m,i,s1,s2;
    HuffmanTree  p;
    if (n<=1) return ERROR;
    m=2*n-1; //需2*n-1個(gè)節(jié)點(diǎn)儲(chǔ)存結(jié)點(diǎn)信息及結(jié)點(diǎn)之間的關(guān)系
    HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode));//0號(hào)單元未用 
    for (p=HT+1, i=1; i<=n; ++i,++p){//初始化貯存n個(gè)字符的結(jié)點(diǎn)
		p->data = w[i].data;
	    p->weight=w[i].w;
		p->parent=0;
	    p->lchild=0;
		p->rchild=0;
	}
    for (; i<=m;++i,++p){ //初始化其余的儲(chǔ)存節(jié)點(diǎn)關(guān)系的n-1個(gè)結(jié)點(diǎn)
		p->data = NULL;
		p->weight=0;
	    p->parent=0;
		p->lchild=0;
	    p->rchild=0;
	}

 //開始構(gòu)造赫夫曼樹
 for (i=n+1; i<=m; ++i) {
 //在HT[1...i-1]選擇parent為0且weight最小的兩個(gè)結(jié)點(diǎn),其序號(hào)為s1和s2
 Select(HT,i-1,s1,s2);
 //printf("%d,%d",s1,s2);
 HT[s1].parent=i; HT[s2].parent=i;
 HT[i].lchild=s1;  HT[i].rchild=s2;
 HT[i].weight=HT[s1].weight+HT[s2].weight;
    } //for 
 //從葉子到根逆向求每個(gè)字符的赫夫曼編碼
 HC = (HuffmanCode)malloc((n+1)*sizeof(char*));//分配n個(gè)字符編碼的頭指針向量
    char*  cd;
	int    f;
    cd = (char*)malloc(n*sizeof(char));//分配求編碼的工作空間
    cd[n-1]='\0';   //編碼結(jié)束符            
    for (i=1; i<=n; i++)  {               //逐個(gè)字符求編碼
 int start = n-1 ;//編碼結(jié)束符位置,最深的一個(gè)葉子結(jié)點(diǎn)需n-1個(gè)編碼
 int c=i; 
 while (f=HT[c].parent) {
     if (HT[f].lchild==c) cd[--start]='0';
     else cd[--start] = '1';
     c=f; 
 } //while
 HC[i] = (char*)malloc((n-start)*sizeof(char));//為第i個(gè)字符編碼分配 空間
 strcpy(HC[i],&cd[start]);  //從cd復(fù)制編碼到HC
    } 
    free(cd);   //釋放工作空間  
} //HuffmanCoding


//譯碼函數(shù) 
Status hfDecoding( HuffmanTree HT,char * cd,char *ccd,int n){
 int i=0;
 int m=2*n-1;//根節(jié)點(diǎn)位置
 int k=0;//記錄ccd中位置
 int p=m;
 ccd=(char*)malloc(256*sizeof(char));//為譯碼申請(qǐng)存儲(chǔ)空間
 int temp=TRUE;//結(jié)束循環(huán)標(biāo)志
 while(temp){
	 if(!HT[p].lchild && !HT[p].rchild ) {
		 ccd[k++]=HT[p].data;  // 將譯出碼保存到ccd
		 p=m;//使其又從根結(jié)點(diǎn)尋找]
		 if(cd[i]=='\0') temp=FALSE;//跳出循環(huán)
	 }//if
	 else {	if(cd[i]=='\0') {
		 printf("給出譯碼錯(cuò)誤!");
		 return ERROR;
	 }//當(dāng)字符串為空或者當(dāng)最后的數(shù)據(jù)串不能組成一個(gè)字母
	   if(((cd[i]=='0') && !HT[p].lchild)||((cd[i]=='1') && !HT[p].rchild)) {
		 printf("給出譯碼錯(cuò)誤!");
		 return ERROR; 
	   }//給出的碼串不正確,不能譯碼。
				if (cd[i]=='0') p=HT[p].lchild ;
				else p=HT[p].rchild;
				i++;
	 }//else
 }//while
	 ccd[k]='\0';//
	 printf("譯碼為:%s",ccd);
	  return OK;	 }




//定義main函數(shù)
void main(){
 int n;// 儲(chǔ)存字符個(gè)數(shù)
  printf("用戶需編譯的字符個(gè)數(shù)為:");
  scanf("%d",&n);
  printf("請(qǐng)逐個(gè)輸入字符及權(quán)值,并以逗號(hào)隔開 ");
     struct Data M[MAXSIZE];
     InitData(M,n);	
	 printf("\n");
  for(int i=1;i<=n;i++){
	 
   printf("輸入第%d個(gè)數(shù)據(jù):",i) ;
   fflush(stdin);//清除緩沖區(qū)數(shù)據(jù)
 
   scanf("%c,%d",&M[i].data,&M[i].w);

  }
  HuffmanTree HT;
  HuffmanCode HC;
  Huffmacoding(HT,HC,M,n);
  printf("sign------weight------parent------lchild------rchild");
  printf("\n");
  for(int j=1;j<=2*n-1;++j){
  printf("%-12c%-13d%-13d%-13d%-13d",HT[j].data,HT[j].weight,
	  HT[j].parent,HT[j].lchild,HT[j].rchild);
      printf("\n");
  }
  printf("\n");
  printf("各個(gè)字符赫夫曼編碼為:\n");
  for(j=1;j<=n;++j){
	  printf("%c:  %s\n",HT[j].data,HC[j]);
}
printf("請(qǐng)用戶輸入需譯碼的數(shù)據(jù)串:");
  char cd[100];
  char *p;
  p=cd;
  scanf("%s",p);
  char *ccd;//儲(chǔ)存譯碼
hfDecoding(HT,p,ccd,n);

 

//  scanf("%s",&cd);
//  hfDecoding(HT,cd,ccd,n);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91精品欧美| 青青草97国产精品免费观看 | 一区二区三区高清| 99精品一区二区三区| 亚洲天堂av老司机| 91成人在线精品| 天堂av在线一区| 精品理论电影在线观看 | 国产精品久久久久久久久免费樱桃 | 日日夜夜免费精品视频| 日韩欧美一二三四区| 麻豆精品在线播放| 国产日韩av一区| 91麻豆精品在线观看| 亚洲成人一区二区| 欧美一区二区观看视频| 国产乱人伦偷精品视频免下载| 国产精品午夜在线| 欧美午夜精品一区二区蜜桃| 秋霞成人午夜伦在线观看| 久久亚洲私人国产精品va媚药| www.亚洲精品| 天堂蜜桃一区二区三区| 久久午夜国产精品| 在线亚洲欧美专区二区| 免费av成人在线| 亚洲欧洲一区二区在线播放| 欧美日韩黄色影视| 国产成人午夜视频| 亚洲国产欧美在线| 久久精品视频在线免费观看| 91丨九色丨尤物| 精品一区二区三区免费毛片爱| 中文字幕亚洲在| 日韩一区二区电影在线| a在线播放不卡| 美女看a上一区| 亚洲激情成人在线| 久久久精品综合| 欧美视频在线一区| 成人app网站| 麻豆精品在线看| 伊人开心综合网| 国产蜜臀97一区二区三区| 91电影在线观看| 福利91精品一区二区三区| 日日夜夜免费精品视频| 亚洲色图色小说| 久久久久国产精品麻豆ai换脸| 在线成人av影院| 91浏览器在线视频| 国产成人亚洲精品狼色在线| 日韩精品一二三四| 亚洲五码中文字幕| 中文字幕一区二区三区在线不卡| 精品99999| 日韩一区二区在线免费观看| 欧美在线视频不卡| 99re视频精品| 成人激情视频网站| 国产成人精品网址| 久久99九九99精品| 日本欧美一区二区三区| 亚洲福利一区二区三区| 樱花草国产18久久久久| 中文字幕在线观看一区二区| 国产视频亚洲色图| 久久一二三国产| 久久综合久久99| 欧美大片拔萝卜| 91精品福利在线一区二区三区| 欧美区一区二区三区| 精品婷婷伊人一区三区三| 91亚洲国产成人精品一区二三| 成人看片黄a免费看在线| 国产成人在线电影| 粉嫩绯色av一区二区在线观看| 国产乱码精品1区2区3区| 极品美女销魂一区二区三区免费| 久久99国产精品久久99果冻传媒| 男女男精品视频| 久久99久久99| 国产伦精品一区二区三区免费迷 | 国产精品亚洲成人| 国产福利视频一区二区三区| 国产乱人伦偷精品视频不卡| 国产精品自在欧美一区| 国产剧情一区在线| 国产大陆精品国产| youjizz国产精品| 91免费在线视频观看| 在线观看网站黄不卡| 欧美日韩亚洲综合一区二区三区| 欧美高清视频在线高清观看mv色露露十八| 欧美日韩国产一级| 欧美大片日本大片免费观看| 欧美精品一区二区高清在线观看| 久久精品欧美日韩精品| 国产精品久久99| 亚洲一区在线电影| 日本不卡一二三| 精品一区二区久久| aaa欧美日韩| 欧美片网站yy| 欧美videofree性高清杂交| 国产日韩欧美综合一区| 日韩伦理电影网| 青青草国产精品亚洲专区无| 国产裸体歌舞团一区二区| 99久久精品国产麻豆演员表| 在线免费精品视频| 日韩欧美高清一区| 亚洲天堂a在线| 男男视频亚洲欧美| 7777精品伊人久久久大香线蕉的 | 免费高清在线一区| 成人一道本在线| 欧美性生活久久| 精品成人免费观看| 一二三区精品视频| 国产剧情av麻豆香蕉精品| 日本国产一区二区| 久久久久久免费| 亚洲一区二区三区激情| 极品美女销魂一区二区三区| 99re视频精品| 久久这里只有精品6| 有坂深雪av一区二区精品| 久久er精品视频| 一本色道久久综合亚洲91 | 激情另类小说区图片区视频区| 波多野结衣亚洲| 日韩一区二区三区在线视频| 国产精品国模大尺度视频| 免费成人在线视频观看| 91免费看`日韩一区二区| 欧美变态tickle挠乳网站| 亚洲精品日日夜夜| 国产伦精品一区二区三区免费迷| 欧美视频在线观看一区二区| 国产精品素人一区二区| 六月丁香婷婷久久| 欧美日韩成人一区二区| 亚洲欧美一区二区视频| 国产麻豆日韩欧美久久| 日韩欧美中文字幕制服| 亚洲自拍偷拍欧美| caoporen国产精品视频| 久久久影院官网| 六月丁香婷婷久久| 欧美猛男男办公室激情| 亚洲最大成人综合| 91一区二区三区在线观看| 日本一区二区免费在线| 国产乱对白刺激视频不卡| 日韩免费电影一区| 日本在线不卡一区| 6080日韩午夜伦伦午夜伦| 亚洲一区在线免费观看| 91极品视觉盛宴| 亚洲综合成人在线视频| 91九色最新地址| 亚洲欧美精品午睡沙发| 91视频一区二区三区| 亚洲色图.com| 91精品1区2区| 亚洲第一主播视频| 在线观看日韩精品| 亚洲电影中文字幕在线观看| 日本高清无吗v一区| 亚洲精品国产一区二区精华液| 91最新地址在线播放| 日韩理论片中文av| 色婷婷久久久综合中文字幕| 一区av在线播放| 欧美日韩国产中文| 蜜臀精品久久久久久蜜臀| 日韩一二三区视频| 国产一区在线观看视频| 久久精品网站免费观看| 不卡电影免费在线播放一区| 国产精品电影一区二区三区| 色综合色综合色综合| 亚洲电影在线播放| 日韩欧美高清一区| 国产成人精品在线看| 亚洲视频狠狠干| 欧美日韩国产片| 久久国产精品99精品国产| 国产视频一区二区在线| 99精品久久只有精品| 亚洲成人一二三| 26uuuu精品一区二区| 99国产精品一区| 午夜电影一区二区三区| 精品国产露脸精彩对白 | 亚洲同性gay激情无套| 欧美日韩在线一区二区| 免费观看一级欧美片| 国产日韩欧美在线一区|