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

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

?? huffman.cpp

?? 霍夫曼編碼解碼。基本原理是頻繁使用的數(shù)據(jù)用較短的代碼代替
?? CPP
字號(hào):
  /*Huffman編碼與解碼器-----可以完成對(duì)ASCII碼表的所有字符的壓縮功能 時(shí)間:2008年12月11日21:22:23*/

#include<stdio.h>
#include<malloc.h> 
#include<conio.h> 
#include<stdlib.h> 
#include<string.h>
#define TABLE 128                    //26個(gè)字母表,
#define MAX 64                     // MAX最長(zhǎng)編碼長(zhǎng)度

int LENGHTH=0;                      // 全局變量_字符個(gè)數(shù)
  
typedef struct                      //Huffman樹(shù)節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)定義
{
	char data;                      // 節(jié)點(diǎn)的字符值
	int p;                          //字符出現(xiàn)的頻率
	int lchild, rchild;             //節(jié)點(diǎn)的左右孩子位置
	int parent;                     //父節(jié)點(diǎn)的位置
}HNode;
HNode huffmannode[2*TABLE-1];


typedef struct                      //Huffman編碼的數(shù)據(jù)結(jié)構(gòu)
{
	int bit[MAX];                   //字符的編碼
	int start;                      //編碼存放的其實(shí)位置
}Hcode;
Hcode huffmancode[TABLE];

void initial()                      //初始化Huffman樹(shù)節(jié)點(diǎn)
{
	int i;
	 for (i=0;i<2*TABLE-1;i++)         
      {
			 huffmannode[i].data=0;
		     huffmannode[i].p=0;
			 huffmannode[i].lchild=-1;
			 huffmannode[i].parent=-1;
			 huffmannode[i].rchild=-1;
	 }
}


void hufftreeconstruct()              //創(chuàng)建Huffman樹(shù)
{
	int i,j,lnode,rnode,n;
	int min1,min2;
   
	n=LENGHTH;
	lnode=rnode=0;
	
	for(i=0;i<n-1;i++)
	{	
		min1=min2=65536;
		for(j=0;j<n+i;j++)
		{
			if(huffmannode[j].parent==-1)
			{
				if(huffmannode[j].p<min1)
				{
					min2=min1;
					rnode=lnode;
			    	min1=huffmannode[j].p;
				    lnode=j;

				}
		    	else if(huffmannode[j].p<min2)
				{
			     	min2=huffmannode[j].p;
			    	rnode=j;
				}
			}
		}
		huffmannode[lnode].parent=n+i; 
		huffmannode[rnode].parent=n+i; 
        huffmannode[n+i].p=huffmannode[lnode].p+huffmannode[rnode].p;
        huffmannode[n+i].lchild=lnode; 
		huffmannode[n+i].rchild=rnode; 

	}

	printf(" \n生成的Huffman 樹(shù)如下:\n");  
	  printf("位置:      頻率:     左孩子:      右孩子:    父節(jié)點(diǎn)位置:\n");
	for(i=0;i<2*n-1;i++) 
	{
		printf(" %3d        %3d          %3d           %3d            %3d\n",i,huffmannode[i].p,huffmannode[i].lchild,huffmannode[i].rchild,huffmannode[i].parent);
	}
	printf("\nHufman 樹(shù)創(chuàng)建完畢\n");
}

FILE *fileopen()
{
	FILE *fp;
	if((fp=fopen("test.txt","r"))==NULL)
	{
		printf("\ntest.txt文件打開(kāi)失敗,文件可能不存在\n");
	    exit(0);
	}
	else
	{
		printf("\ntest.txt文件打開(kāi)成功\n");
		
	}
	return fp;	

}


void tongjipinlv(FILE *fp)                       //從test.txt文件中讀取字符 并統(tǒng)計(jì)各字符出現(xiàn)的頻率
{
	int a[TABLE]={0};
	int i,j,b=0;
	char ch;
	
	while(feof(fp)==0)
	{	
		ch=fgetc(fp);
		i=ch;
		a[i]++;
	}
	fclose(fp);

	j=0;
	for(i=0;i<TABLE;i++)
	{
		if(a[i]!=0)
		{
			LENGHTH++;
            huffmannode[j].data=i;
            huffmannode[j].p=a[i];
			j++;
		}
	}	
	
      	printf("\n文件中出現(xiàn)的字符:                頻率:\n");
	for(i=0;i<LENGHTH;i++)
	{
		printf("%c                                %d \n",huffmannode[i].data,huffmannode[i].p);
	}
	printf("\n");
	
}


void huffman_code()                                //對(duì)Huffman樹(shù)進(jìn)行編碼
{
	Hcode code;
	int i,j,k,m;
	FILE *fp;

	for(i=0;i<LENGHTH;i++)
	{
		code.start=MAX-1;
		m=i;
		k=huffmannode[m].parent;
		while(k!=-1)
		{
			if(huffmannode[k].lchild==m)
				code.bit[code.start]=0;
			else code.bit[code.start]=1;
			code.start--;
			m=k;
			k=huffmannode[m].parent;
		}
	
		for(j=code.start+1;j<MAX;j++)
			huffmancode[i].bit[j]=code.bit[j];
	
		huffmancode[i].start=code.start;
		
	}
	printf("\nHuffman編碼如下:\n");
	for(i=0;i<LENGHTH;i++)
	{	printf("%c:        ",huffmannode[i].data);
		for(j=huffmancode[i].start+1;j<MAX;j++)
			printf(" %d",huffmancode[i].bit[j]);
		printf("\n");
	}

	printf("\n編碼結(jié)束 \n");
	
	if((fp=fopen("code.txt","w+"))!=NULL)
		for(i=0;i<LENGHTH;i++)
		{
			fprintf(fp,"%c       ",huffmannode[i].data);
		    for(j=huffmancode[i].start+1;j<MAX;j++)
			fprintf(fp,"%d",huffmancode[i].bit[j]);		
	        fprintf(fp,"\n");	
		}
	else 
	{
		printf("Can not open or create the file \"code.txt\".\n");
        exit(0);
	}

	fclose(fp);
	printf("\nHuffman編碼方案文件----code.txt創(chuàng)建成功!\n");
	
}


void code_ef()                                //計(jì)算編碼效率 用Huffman編碼的總長(zhǎng)度除以等長(zhǎng)編碼的總長(zhǎng)度
{
	float m,n,t;
	int i;
	m=0;
	for(i=0;i<LENGHTH;i++)
		m=m+huffmannode[i].p*(MAX-huffmancode[i].start);
	n=huffmannode[2*LENGHTH-2].p*MAX;
    t=m/n*100;
	printf("\nHuffman 編碼效率:    %f%%\n",t);

}

void compression()                          //對(duì)test.txt文件進(jìn)行壓縮,所以內(nèi)容轉(zhuǎn)換成Huffman碼
{
	int  i,j,m=0;
	char ch;
	FILE *fp1,*fp2;
	
	fp1=fileopen();
	
	if((fp2=fopen("compression.txt","w+"))==NULL)
	{
		printf("\n文件創(chuàng)建不成功\n");
		exit(0);
	}
	else 
		printf("\ncompression.txt文件創(chuàng)建成功。\n");

	ch=fgetc(fp1);
 	while(feof(fp1)==0)
	{

		for(i=0;i<LENGHTH;i++)
			if(ch==huffmannode[i].data)
				break;
		for(j=huffmancode[i].start+1;j<MAX;j++)
			fprintf(fp2,"%d",huffmancode[i].bit[j]);
     	ch=fgetc(fp1);

	}	
     fclose(fp1);
	 fclose(fp2);
}


void huffman_decode()                     //Huffman  解碼函數(shù)
{
	FILE *fp1,*fp2;
	char ch;
    int m;
    if((fp1=fopen("compression.txt","r"))==NULL)
	{
		printf("\n在解碼時(shí)compression.txt文件不成功!\n");
		exit(0);
	}
	if((fp2=fopen("huffman_decode.txt","w+"))==NULL)
	{
		printf("\nhuffman_decode.txt文件創(chuàng)建不成功\n");
		exit(0);
	}
	else 
		printf("\nhuffman_decode.txt文件創(chuàng)建成功!\n\n下面進(jìn)行解碼:\n");
    
	ch=fgetc(fp1);
	m=2*LENGHTH-2;
 	while(feof(fp1)==0)
	{
		if(ch=='0')
		{
			if(huffmannode[huffmannode[m].lchild].data==0)
				m=huffmannode[m].lchild;
			else
			{
			   fprintf(fp2,"%c",huffmannode[huffmannode[m].lchild].data);
			   m=2*LENGHTH-2;
			}
		}
		else
		{
			if(huffmannode[huffmannode[m].rchild].data==0)
				m=huffmannode[m].rchild;
			else
			{
			   fprintf(fp2,"%c",huffmannode[huffmannode[m].rchild].data);
			   m=2*LENGHTH-2;
			}	
		}
        ch=fgetc(fp1);
	}	
     fclose(fp1);
     fclose(fp2);
	 printf("\nHuffman 解碼成功,解碼結(jié)果保存在huffman_decode.txt中。請(qǐng)注意檢查!\n\n");

}

void main()
{
	FILE *fp;
	printf("\nHuffman 編碼器-------<李海  2601307023>\n");
	initial();
	fp=fileopen();
	tongjipinlv(fp);
	hufftreeconstruct();
	huffman_code();
	code_ef();
	compression();
    huffman_decode();

}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久久久一区| 国产精品毛片久久久久久| 日本黄色一区二区| 成人av网址在线观看| 国产99精品国产| 国产成人自拍在线| 国产成人av电影在线播放| 精久久久久久久久久久| 久久99久久久欧美国产| 日韩国产精品大片| 久久精品国产精品亚洲红杏| 蜜桃视频在线一区| 国产一区二区剧情av在线| 国产在线精品免费| 国产成人久久精品77777最新版本| 精久久久久久久久久久| 国产精品一区二区久久不卡| 国产精品亚洲成人| 懂色中文一区二区在线播放| 成人免费高清在线观看| 99免费精品在线观看| 一本色道久久综合亚洲aⅴ蜜桃 | 成人视屏免费看| 成人免费高清在线| 色综合一个色综合亚洲| 欧美在线播放高清精品| 91精品国产色综合久久不卡电影| 91精品国产综合久久精品| 精品国产亚洲在线| 久久婷婷国产综合国色天香| 国产女同性恋一区二区| 亚洲人吸女人奶水| 亚洲国产精品麻豆| 老司机一区二区| 国产99久久久国产精品潘金| 色www精品视频在线观看| 91精品视频网| 久久精品视频免费| 一区二区三区久久| 日韩 欧美一区二区三区| 国产剧情在线观看一区二区| zzijzzij亚洲日本少妇熟睡| 欧美日韩不卡在线| 精品粉嫩aⅴ一区二区三区四区| 亚洲国产高清在线观看视频| 亚洲一区在线看| 久久精品国产亚洲高清剧情介绍| av电影天堂一区二区在线 | 久久精品在这里| 亚洲男人电影天堂| 蜜臀av一级做a爰片久久| 国产盗摄精品一区二区三区在线 | 亚洲国产精品ⅴa在线观看| 亚洲综合在线观看视频| 狠狠v欧美v日韩v亚洲ⅴ| 91免费观看国产| 精品国产乱码久久久久久久久| 中文字幕在线观看不卡视频| 日韩精品亚洲一区| 不卡的av网站| 日韩欧美国产一区二区三区| 国产精品久久久久7777按摩| 日本网站在线观看一区二区三区| 国产69精品一区二区亚洲孕妇| 欧美日韩色一区| 欧美高清在线一区二区| 视频一区二区三区中文字幕| 成人免费视频app| 欧美一区二区三区色| 亚洲视频综合在线| 激情综合色播激情啊| 欧美无乱码久久久免费午夜一区| 国产视频一区二区在线| 日本视频中文字幕一区二区三区| 91年精品国产| 久久精品一区二区三区av| 午夜精品久久久| 色综合天天在线| 国产午夜精品一区二区三区嫩草| 日韩精品国产欧美| 91成人国产精品| 中文字幕av不卡| 极品少妇xxxx偷拍精品少妇| 欧美日韩一级视频| 亚洲欧美日韩中文字幕一区二区三区 | 日日夜夜精品视频免费| 色www精品视频在线观看| 国产精品另类一区| 国产精品一区二区久激情瑜伽| 日韩精品一区二区三区老鸭窝| 亚洲国产日韩综合久久精品| 一本色道a无线码一区v| 国产精品午夜免费| 东方欧美亚洲色图在线| 久久一区二区三区四区| 韩国精品一区二区| 精品欧美一区二区久久| 免费成人你懂的| 欧美一三区三区四区免费在线看| 亚洲地区一二三色| 欧美午夜不卡在线观看免费| 亚洲影院理伦片| 欧美无砖专区一中文字| 亚洲观看高清完整版在线观看| 色视频成人在线观看免| 亚洲一区二区三区三| 色吧成人激情小说| 亚洲综合一区二区精品导航| 欧美亚洲免费在线一区| 亚洲成人综合网站| 欧美三级资源在线| 性久久久久久久久久久久| 欧美日韩精品一区二区三区四区 | 成人18精品视频| 国产精品日韩精品欧美在线| 成人网页在线观看| 亚洲欧美日韩电影| 欧美视频在线一区二区三区| 亚洲成人动漫av| 在线电影院国产精品| 婷婷中文字幕综合| 日韩午夜av电影| 狠狠色丁香婷婷综合久久片| 久久精品一二三| 成人爱爱电影网址| 亚洲精品五月天| 欧美日产在线观看| 久久精品国产亚洲5555| 亚洲国产高清不卡| 色婷婷精品久久二区二区蜜臂av| 一级特黄大欧美久久久| 欧美精品日韩精品| 精品在线免费观看| 国产精品污www在线观看| 色综合久久久久| 日韩激情视频网站| 精品国产1区二区| eeuss鲁片一区二区三区在线观看| 亚洲精品视频观看| 91精品国模一区二区三区| 国产一区二区在线免费观看| 国产精品欧美久久久久无广告| 色婷婷av久久久久久久| 麻豆成人av在线| 欧美激情一区二区| 日本丶国产丶欧美色综合| 热久久免费视频| 国产精品天干天干在观线| 欧美色图第一页| 国内成人精品2018免费看| 136国产福利精品导航| 在线播放中文一区| 成熟亚洲日本毛茸茸凸凹| 亚洲成av人影院在线观看网| 久久婷婷久久一区二区三区| 欧美亚洲综合另类| 国产成人一区二区精品非洲| 亚洲综合色视频| 久久精品网站免费观看| 欧美日韩夫妻久久| 国产91精品露脸国语对白| 三级精品在线观看| 国产精品欧美一区二区三区| 日韩一卡二卡三卡| 91视频在线观看| 久久精品国产99| 亚洲一区二区五区| 2019国产精品| 欧美人xxxx| 成人av资源站| 美国十次综合导航| 亚洲国产一区二区三区青草影视| 国产日韩成人精品| 日韩欧美国产一区二区三区| 欧美亚洲动漫精品| 成人av网站在线观看免费| 麻豆久久一区二区| 亚洲国产精品自拍| 国产日韩精品一区| 精品国产欧美一区二区| 欧美日韩亚洲综合一区 | 久久先锋资源网| 欧美精品在线观看播放| 91影院在线观看| 国产成人夜色高潮福利影视| 免费成人深夜小野草| 日韩精品久久理论片| 亚洲一区二区成人在线观看| 一色屋精品亚洲香蕉网站| 国产亚洲欧美日韩在线一区| 欧美妇女性影城| 在线视频一区二区三| 91在线视频网址| 国产a精品视频| 国产.欧美.日韩| 国内精品嫩模私拍在线| 另类小说一区二区三区| 秋霞成人午夜伦在线观看| 亚洲五码中文字幕| 亚洲精品v日韩精品|