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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? huffman.cpp

?? HuffMan編碼,用于壓縮信源,稍加修改可用于實際應用。
?? CPP
字號:
/*===============================
程序名:霍夫曼編碼
作者:何震 研通信0704班 07120075
注意:沒有考慮漢字寬字符,所以請以全英文文件進行測試
如有問題請聯系:07120075@bjtu.edu.cn
================================*/
#include <stdio.h>
#include <math.h>
#include <conio.h>
#define TABLELENGTH 128
#define MAXSIZE 512
typedef struct tagHTNode
{
	int Parent;//父節點
	int LeftChild;//左子節點
	int RightChild;//右子節點
	int Weight;//權重
}HTNode;//霍夫曼樹的節點結構
typedef struct tagCode
{
	char code[MAXSIZE];//Huffman編碼的字符形式數組
	int Weight;//Ascii碼在文中的權重
}Code;//Huffman碼結構
typedef HTNode HuffTree[2*TABLELENGTH];//Huffman樹
typedef Code HuffCode[TABLELENGTH];//128個Ascii碼的Huffman碼結構
int SelectHTNode(HuffTree HT,int n,int *min1,int *min2)
{//選擇0~n-1個Code中權重最小的兩個
	int cnt=0;//剩余有效Code的個數,有效是指循環中的條件,即權重大于0,且未分配父節點
	for(int i=0;i<n;i++)
	{	
		if(HT[i].Weight>0 && HT[i].Parent==-1)
			cnt++;
	}
	if(cnt<=1)//如果少于兩個,就說明樹已經構造到樹頂了
		return 0;//返回0表示到樹頂
	for(i=0;i<n;i++)
	{//找最小權重節點的序號,先初始化min1
		if(HT[i].Parent==-1 && HT[i].Weight>0)
		{
			*min1=i;
			break;
		}
	}
	for(i=0;i<n;i++)
	{//找次最小節點的序號,先初始化min2,注意條件i!=*min1,不能使之初始指向同一節點,否則結果有重合錯誤
		if(HT[i].Parent==-1 && HT[i].Weight>0 && i!=*min1)
		{
			*min2=i;
			break;
		}
	}
	for(i=0;i<n;i++)
	{
		if(HT[i].Parent==-1 && HT[i].Weight>0)
		{
			if(HT[*min1].Weight>HT[i].Weight)
			{//如果找到一個有效節點,其權重比上一最小權重節點權重小
				*min2=*min1;//把上一最小權重節點的序號賦予次最小權重節點
				*min1=i;//更新最小權重節點序號
			}
			else if(HT[*min2].Weight>HT[i].Weight && i!=*min1)//如果該節點權重不比最小權重節點小,
				*min2=i;//但比次最小權重節點小,且該節點不是最小權重節點,則更新次最小權重節點序號
		}
	}
	return 1;//返回1說明應該繼續構造樹
}
void GenerateTree(HuffTree HT,HuffCode hc)
{
	int min1,min2;
	for(int i=0;i<TABLELENGTH;i++)
	{//以下兩個循環初始化霍夫曼樹的左子,右子和父節點,并為樹底的權賦值
		HT[i].Weight=hc[i].Weight;
		HT[i].LeftChild=HT[i].RightChild=HT[i].Parent=-1;
	}
	for(;i<2*TABLELENGTH-1;i++)
	{
		HT[i].LeftChild=HT[i].RightChild=HT[i].Parent=-1;
	}
	for(i=TABLELENGTH;i<2*TABLELENGTH-1;i++)
	{//從第TABLELENGTH個節點開始為上層節點
		int r=SelectHTNode(HT,i,&min1,&min2);
		if(r<1)//從第0到i-1的底層節點中沒有賦給父節點的節點中找兩個最小權值
			break;//如果沒有找到2個最小的說明已經到了樹頂
		HT[min1].Parent=i;//為他們賦予父節點指針
		HT[min2].Parent=i;
		HT[i].LeftChild=min1;//設置當前節點左子
		HT[i].RightChild=min2;//設置當前節點右子
		HT[i].Weight=HT[min1].Weight+HT[min2].Weight;//設置當前節點權
	}
}
void GenerateCode(HuffTree HT,HuffCode hc)
{//Huffman編碼
	int Stack[MAXSIZE],top=-1,tc;
	char flag[MAXSIZE];
	HTNode th;
	for(int i=0;i<TABLELENGTH /*&& HT[i].Weight>0*/;i++)
	{//從樹底開始遍歷
		top=-1;//編碼路徑的跳數,或者說路徑的長度
		int j=0;//編碼序號
		th=HT[i];//獲得樹的一個節點
		tc=i;//獲得其序號
		while(th.Parent!=-1)
		{//如果其仍有父節點
			Stack[++top]=th.Parent;//將其父節點序號壓棧
			if(HT[th.Parent].LeftChild==tc)
			{//如果其父節點的左子為當前節點
				flag[top]='L';//flag存放編碼所依據的路徑信息
				tc=th.Parent;//向上一層
			}
			else if(HT[th.Parent].RightChild==tc)
			{//如果父節點右子為當前節點
				flag[top]='R';//路徑為向右
				tc=th.Parent;//向上一層
			}
			th=HT[Stack[top]];//獲得上一層的節點
		}
		while(top!=-1)
		{//如果路徑長度不為負數
			if(flag[top]=='L')
				hc[i].code[j++]='0';//根據flag數組進行編碼
			else
				hc[i].code[j++]='1';
			top--;
		}
		hc[i].code[j]='\0';
	}
}
int GetProbability(HuffCode hc,char *file)
{//讀文件初始化128個ascii碼的權重
	FILE *in;
	int c,nTotal=0;
	for(int i=0;i<TABLELENGTH;i++)
	{
		hc[i].Weight=0;//初始為0
	}
	in=fopen(file,"rb");//打開文件
	if(in==NULL)
	{
		printf("No such file!");
		return 0;
	}	
	while((c=fgetc(in))!=EOF)
	{//讀字符,根據Ascii碼值累加權值
		hc[c].Weight++;
		nTotal++;
		//printf("%c\n",c);
	}
	fclose(in);
	return nTotal;
}
void main()
{
	int nCount;
	char file[128];
	HuffTree HT;//Huffman樹結構
	HuffCode hc;//Huffman碼表	
	printf("Input file name:");
	gets(file);//獲取文件名
	nCount=GetProbability(hc,file);//讀文件初始化信源概率數組	
	GenerateTree(HT,hc);//構造霍夫曼樹
	GenerateCode(HT,hc);//根據霍夫曼樹進行編碼
	//測試	
	for(int i=0;i<TABLELENGTH;i++)
	{
		if(hc[i].Weight!=0)
		{
			printf("Ascii Value:%d,Weight:%5.4lf,Encode to:%s\n",i,(double)hc[i].Weight/nCount,hc[i].code);
		}
	}
	getch();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩av一级片| 一区二区在线观看不卡| 一本久久精品一区二区| 成人在线一区二区三区| 国产成人免费网站| 懂色av噜噜一区二区三区av| 国产在线不卡一区| 国产成人午夜99999| 国产成人无遮挡在线视频| 成人av在线播放网址| av激情综合网| 91视视频在线直接观看在线看网页在线看 | 久久精品99国产精品| 免费在线看成人av| 国产伦精品一区二区三区免费迷| 99视频在线精品| 色婷婷av一区二区三区之一色屋| 欧美专区日韩专区| 在线不卡免费av| 精品久久久久久久人人人人传媒| 欧美精品一区在线观看| 中文字幕不卡在线观看| 久久国内精品自在自线400部| 视频一区二区国产| 九九九精品视频| 国产成人精品www牛牛影视| 北条麻妃国产九九精品视频| 欧美自拍偷拍一区| 欧美电影免费观看高清完整版在线观看| 精品久久久久久久久久久久久久久久久 | 三级在线观看一区二区 | 中文字幕日韩一区| 亚洲高清免费一级二级三级| 日韩电影在线观看一区| 国产精品一品二品| 在线看日韩精品电影| 久久综合视频网| 一区二区欧美在线观看| 久草在线在线精品观看| 白白色 亚洲乱淫| 91精品国产日韩91久久久久久| 国产日韩亚洲欧美综合| 亚洲福利电影网| 成人精品gif动图一区| 欧美欧美午夜aⅴ在线观看| 欧美成人女星排名| 亚洲欧美色综合| 国产精品自在欧美一区| 欧美三级中文字幕| 中文字幕日韩精品一区| 捆绑调教一区二区三区| 成人福利视频在线看| 欧美一级二级三级蜜桃| 亚洲裸体xxx| 国产精品一区二区你懂的| 欧美精三区欧美精三区| **性色生活片久久毛片| 国产激情91久久精品导航| 欧美二区在线观看| 亚洲一级在线观看| 99国产精品久| 国产精品的网站| 高清不卡一区二区| 久久久青草青青国产亚洲免观| 日本在线观看不卡视频| 精品视频1区2区| 亚洲国产一区二区视频| 欧美最新大片在线看| 亚洲黄色在线视频| 91国偷自产一区二区开放时间| 国产精品美女久久久久高潮| 国产激情视频一区二区三区欧美| 精品国产三级电影在线观看| 免费高清不卡av| 4438x亚洲最大成人网| 亚洲成人激情综合网| 欧美综合色免费| 亚洲一区二区三区四区在线免费观看| 一本久道久久综合中文字幕| 日韩毛片精品高清免费| 风间由美中文字幕在线看视频国产欧美| 精品免费日韩av| 精品制服美女久久| 久久精品这里都是精品| 国产成人精品三级麻豆| 国产精品情趣视频| 91丨九色丨黑人外教| 一区二区三区在线高清| 欧美久久久久久久久中文字幕| 午夜精品在线看| 欧美大白屁股肥臀xxxxxx| 麻豆成人综合网| 久久久精品日韩欧美| 丁香激情综合五月| 依依成人精品视频| 欧美日韩国产成人在线免费| 日本va欧美va精品| 国产欧美一区二区精品忘忧草| 成人免费看片app下载| 一区二区三区毛片| 日韩美一区二区三区| 成人毛片老司机大片| 亚洲精品国产无天堂网2021| 91精品国产综合久久婷婷香蕉 | 国产精品1024| 亚洲欧美福利一区二区| 在线播放中文字幕一区| 国内外成人在线视频| 亚洲乱码国产乱码精品精98午夜 | 国产成人啪免费观看软件| 国产精品久久二区二区| 91精品国产日韩91久久久久久| 国产高清不卡一区二区| 亚洲成a人在线观看| 中文字幕在线不卡一区二区三区| 欧美色网站导航| 国产精品99久久久久| 性做久久久久久| 国产性天天综合网| 欧美日精品一区视频| 国产精品18久久久久久久久| 亚洲综合视频网| 亚洲国产精品成人综合色在线婷婷| 欧美专区亚洲专区| 不卡电影免费在线播放一区| 蜜臀久久99精品久久久久久9| 1000部国产精品成人观看| 精品国产乱子伦一区| 欧美午夜电影在线播放| 成人激情午夜影院| 久久99精品国产.久久久久久| 一区二区三区久久久| 欧美国产综合色视频| 日韩免费高清av| 91精品国产91久久综合桃花 | 欧美日本在线看| 99精品视频中文字幕| 国产成人亚洲综合a∨婷婷图片| 日本最新不卡在线| 天堂久久一区二区三区| 亚洲综合图片区| 亚洲视频精选在线| 国产最新精品免费| 热久久久久久久| 色88888久久久久久影院按摩 | 精品黑人一区二区三区久久| 91天堂素人约啪| 久久午夜色播影院免费高清| 日韩一区二区三区电影在线观看| 欧洲视频一区二区| 欧亚一区二区三区| 91久久精品国产91性色tv| 99精品视频免费在线观看| 成人国产精品免费网站| 成人一区在线看| 不卡一区在线观看| jizz一区二区| 99国产精品国产精品毛片| 91在线精品一区二区三区| 色综合天天做天天爱| 99在线精品观看| 色综合久久久久久久久| 在线视频国内自拍亚洲视频| 色94色欧美sute亚洲线路二| 欧美在线你懂得| 7777精品伊人久久久大香线蕉的| 欧美区一区二区三区| 欧美成人精品3d动漫h| 精品国产精品网麻豆系列| 欧美精品一区二区三区在线播放| 欧美mv日韩mv国产| 国产精品久久久久影视| 伊人夜夜躁av伊人久久| 日韩高清不卡在线| 国产精品综合二区| 色狠狠色狠狠综合| 欧美一区二区在线免费播放| 精品久久久久久亚洲综合网| 中文字幕高清一区| 亚洲综合色视频| 九九国产精品视频| 91在线精品一区二区| 9191国产精品| 欧美激情一区不卡| 亚洲一区二区偷拍精品| 激情五月激情综合网| 99久久精品国产网站| 欧美一二三四在线| 日韩美女视频一区二区 | 欧美电影在哪看比较好| 国产一区二区女| 91麻豆精东视频| 日韩一区二区在线观看| 国产精品国产精品国产专区不蜜| 一区二区高清视频在线观看| 麻豆91小视频| 91福利在线导航| 国产欧美日韩精品一区| 亚洲国产日产av| 成人av在线资源|