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

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

?? hfm.cpp

?? 赫夫曼編/譯碼器設計 初始化 編碼 譯碼
?? CPP
字號:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
const SIZE=256;
const SMALLSIZE=20;
struct  HTnode {
	int weight;
	int parent;
	int lchild;
	int rchild;
	char data;
	char code[SIZE];
};
HTnode *HT;
int m,n;
int hashf[SIZE];
char str[SIZE];
void computef()
{
	FILE *in;
	in=fopen("ToBeTran.txt","r");
	if(!in)
	{
		printf("不能打開輸入文件\n");
		return;
	}	
	memset(hashf,0,sizeof(hashf));
	char ch;
	while((ch=fgetc(in))!=EOF)		
		hashf[ch]++;
	n=0;
	int i,j=-1;
	for(i=0;i<SIZE;i++)
		if(hashf[i])
			n++;	
	for(i=0;i<SIZE;i++)
		if(hashf[i]!=0)		
			str[++j]=(char)i;
	fclose(in);
}

//s1<=s2
void select(HTnode *HT,int end,int &s1,int &s2)
{
	int min1,min2,i,j,t;
	min1=INT_MAX;
	for(i=1;i<=end;i++)
		if(HT[i].parent==0 && HT[i].weight<min1)
		{
			min1=HT[i].weight;
			s1=i;
		}	
	min2=INT_MAX;
	for(j=1;j<=end;j++)
		if(HT[j].parent==0 && HT[j].weight<min2 && j!=s1)
		{
			min2=HT[i].weight;
			s2=j;
		}
	if(s1>s2)
	{
		t=s1;
		s1=s2;
		s2=t;
	}
}
//初始化
void Init()
{	
	int i,j,*w;	
	computef();
	m=2*n-1;
	w=(int *)malloc(sizeof(int)*n);
	for(i=0,j=-1;i<SIZE;i++)
		if(hashf[i])
			w[++j]=hashf[i];
	HT=(HTnode *)malloc(sizeof(HTnode)*(m+1));
	if(!HT)
	{
		printf("內存不足\n");
		exit(0);
	}
	for(i=1;i<=n;i++)
	{
		HT[i].weight=w[i-1];
		HT[i].parent=0;
		HT[i].lchild=0;
		HT[i].rchild=0;
		HT[i].data=str[i-1];
	}	
	for(;i<=m;i++)
	{
		HT[i].weight=0;
		HT[i].parent=0;
		HT[i].lchild=0;
		HT[i].rchild=0;
		HT[i].data='\0';
		HT[i].code[0]='\0';
	}	
	int s1,s2;
	for(i=n+1;i<=m;i++)
	{
		select(HT,i-1,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;
	}
	char *cd;
	int c,f,start;
	cd=(char *)malloc(sizeof(char)*n);
	cd[n-1]='\0';
	for(i=1;i<=n;i++)
	{
		start=n-1;
		for(c=i,f=HT[i].parent;f;c=f,f=HT[f].parent)
			if(HT[f].lchild==c)
				cd[--start]='0';
			else
				cd[--start]='1';
		strcpy(HT[i].code,&cd[start]);		
	}
	free(cd);
	printf("初始化完畢\n");
}
//編碼
void Encoding()
{
	FILE *in,*out;
	in=fopen("ToBeTran.txt","r");
	if(!in)
	{
		printf("不能打開輸入文件\n");
		return;
	}
	out=fopen("CodeFile.txt","w");
	char ch;
	while((ch=fgetc(in))!=EOF)	
		for(int i=1;i<=n;i++)
			if(HT[i].data==ch)
				fprintf(out,"%s",HT[i].code);
	fprintf(out,"\n");
	printf("編碼完畢\n");
	fclose(in);
	fclose(out);
}

//譯碼
void Decording()
{
	int i,j=-1,find=0;
	char ch,str[SMALLSIZE];
	memset(str,0,sizeof(str));
	FILE *in,*out;
	in=fopen("CodeFile.txt","r");
	if(!in)
	{
		printf("不能打開輸入文件\n");
		return;
	}
	out=fopen("TextFile.txt","w");
	while((ch=fgetc(in))!=EOF)
	{		
		if(find)
		{
			memset(str,0,sizeof(str));
			j=-1;
		}
		str[++j]=ch;
		for(i=0;i<=n;i++)
			if(strcmp(HT[i].code,str)==0)
			{
				find=1;
				fprintf(out,"%c",HT[i].data);
				break;
			}
		if(i>n)
			find=0;
	}
	printf("譯碼完畢\n");
	fclose(in);
	fclose(out);
}

//打印輸出代碼文件
void Printing()
{
	FILE *in;
	in=fopen("CodeFile.txt","r");
	if(!in)
	{
		printf("不能打開輸入文件\n");
		return;
	}
	char ch;
	while((ch=fgetc(in))!=EOF)
		putchar(ch);
}
//打印哈夫曼樹(樹形)
void TreePrinting()
{
	int i,j;	
	for(i=n;i>=1;i--) 
	{		
		if(i==n)
		{
			printf("\t\t*\n\n");
			printf("\t%c\t\t*\n\n",HT[n-i+1].data);		
		}
		else if(i!=2&&i!=1)
		{
			for(j=0;j<=n-i;j++)
				printf("\t");
			printf("%c\t\t*\n\n",HT[n-i+1].data);		
		}
		else if(i==2)
		{
			for(j=0;j<=n-i;j++)
				printf("\t");
			printf("%c\t\t%c\n\n",HT[n-i+1].data,HT[n].data);		
		}
		else if(i==1)
			printf("\n\n");
	}
	printf("\n");
}
//打印哈夫曼樹(樹形)
void TreePrint()
{
	int i,j;	
	for(i=1;i<=n;i++)
	{		
		if(i==1)
		{
			printf("\t\t*\n\n");
			printf("\t%c\t\t*\n\n",HT[i].data);		
		}
		else if(i==2)
		{
			for(j=0;j<i;j++)
				printf("\t");
			printf("%c\t\t*\n\n",HT[i].data);		
		}
		else if(i!=2 && i!=1 && i!=n)
		{
			for(j=0;j<i;j++)
				printf("\t");
			printf("%c\t\t%c\n\n",HT[i].data,HT[n].data);		
		}		
		else if(i==n)
			printf("\n\n");
	}
	printf("\n");
}
int getd(int n)
{
	int h=0;
	return h;
}
void show()
{
	int i;
	printf("父節點\t左兒子\t右兒子\t字符\n");
	for(i=1;i<=m;i++)
		printf("%d\t%d\t%d\t%c\n",HT[i].parent,HT[i].lchild,HT[i].rchild,HT[i].data);
}
int main()
{
	FILE *out;
	out=fopen("ToBeTran.txt","w");
	for(int i=0;i<7;i++)
		fputc('a',out);
	for(i=0;i<5;i++)
		fputc('b',out);
	for(i=0;i<2;i++)
		fputc('c',out);
	for(i=0;i<4;i++)
		fputc('d',out);
/*	for(i=0;i<29;i++)
		fputc('e',out);
	for(i=0;i<14;i++)
		fputc('f',out);
	for(i=0;i<7;i++)
		fputc('g',out);
	for(i=0;i<8;i++)
		fputc('h',out);*/
	fclose(out);
	int InitDid,EnDid,DecDid;
 	InitDid=EnDid=DecDid=0;
	while(1)
	{		
		printf("===================================\n");
		printf("\t赫夫曼編/譯碼器設計\n");
		printf("===================================\n");
		printf("1.初始化\n");
		printf("2.編碼\n");
		printf("3.譯碼\n");
		printf("4.打印輸出代碼文件\n");
		printf("5.打印輸出赫夫曼樹\n");
		printf("0.退出\n");
		int choice=0;
		fcloseall();
		scanf("%d",&choice);
		while(choice<0 || choice >5)
		{
			printf("輸入錯誤,請重新輸入:");
			scanf("%d",&choice);
		}
		
		switch(choice)
		{
			case 1:				
				if(!InitDid)
				{
					Init();
					InitDid=1;
				}
				break;
			case 2:				
				if(InitDid)
				{
					Encoding();
					EnDid=1;
				}
				else
					printf("還沒初始化,請先初始化\n");
				break;
			case 3:				
				if(EnDid)
				{
					Decording();
					DecDid=1;
				}
				else
					printf("還未編碼,請先編碼\n");
				break;
			case 4:				
				if(EnDid)				
					Printing();
				else
					printf("還未譯碼,請先編碼\n");
				break;
			case 5:TreePrinting();				
				break;
			case 0:printf("謝謝使用,再見!\n");
				return 0;
		}		
	}

	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产不卡视频一区| 欧美一二三区在线| 国产日韩一级二级三级| 国内外成人在线| 国产欧美日韩不卡| 97se亚洲国产综合自在线| 亚洲图片欧美综合| 欧美成人精品1314www| 国产精品夜夜爽| 亚洲美女免费在线| 69p69国产精品| 国产福利电影一区二区三区| 国产精品欧美经典| 欧美日韩精品一区二区三区蜜桃 | 国产精品久久影院| 91麻豆精品在线观看| 天天操天天色综合| 99精品热视频| 亚洲一区二区在线免费观看视频| 欧美年轻男男videosbes| 日韩vs国产vs欧美| 国产欧美精品一区aⅴ影院 | 国产精品嫩草影院av蜜臀| 色一情一乱一乱一91av| 日日夜夜免费精品| 亚洲国产岛国毛片在线| 在线一区二区三区四区五区| 久久精品国产亚洲5555| 综合网在线视频| 日韩免费观看高清完整版| 成人小视频在线观看| 午夜欧美2019年伦理| 国产精品免费av| 日韩午夜小视频| 色久综合一二码| 国产一区二区三区在线观看免费视频 | 亚洲欧美一区二区三区久本道91| 这里只有精品视频在线观看| av毛片久久久久**hd| 久久99国内精品| 亚洲一区免费在线观看| 中文一区二区完整视频在线观看| 777色狠狠一区二区三区| aaa欧美色吧激情视频| 蜜桃av一区二区| 亚洲.国产.中文慕字在线| 国产精品乱码人人做人人爱| 欧美电视剧免费观看| 欧美女孩性生活视频| 91婷婷韩国欧美一区二区| 国产一区 二区 三区一级| 日韩av电影免费观看高清完整版 | 中文字幕一区二区在线播放| 精品久久久久久久一区二区蜜臀| 在线观看区一区二| 97久久精品人人做人人爽| 国产一区二区三区国产| 日本视频一区二区| 性欧美大战久久久久久久久| 亚洲天堂福利av| 国产精品国产馆在线真实露脸 | 国产精品丝袜一区| 欧美激情综合在线| 国产日韩综合av| 国产午夜精品美女毛片视频| 欧美精品一区二区三区很污很色的| 欧美日韩黄色影视| 欧美日韩国产精品自在自线| 欧美性猛交xxxx乱大交退制版 | 国产主播一区二区三区| 青青草97国产精品免费观看无弹窗版| 无吗不卡中文字幕| 婷婷开心激情综合| 琪琪一区二区三区| 九色综合狠狠综合久久| 麻豆精品视频在线| 国产一区二区三区四区在线观看| 久久99精品久久久| 国产一区二区三区四区五区入口| 国产一区二区三区最好精华液| 国产一区二区三区在线观看精品| 国产精品一区二区果冻传媒| 国产一区二区三区久久悠悠色av | 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 国产成人av电影| 成人三级在线视频| 99re这里都是精品| 在线观看一区日韩| 欧美无砖砖区免费| 欧美一区2区视频在线观看| 日韩欧美二区三区| 欧美国产精品专区| 亚洲毛片av在线| 亚洲不卡在线观看| 成人av网站在线观看免费| 亚洲国产精品久久人人爱| 亚洲国产婷婷综合在线精品| 亚洲午夜一二三区视频| 男男视频亚洲欧美| 国产成人精品1024| 欧美在线观看视频一区二区| 5858s免费视频成人| 久久青草欧美一区二区三区| 国产精品久久久久一区二区三区| 亚洲国产精品久久久久秋霞影院 | 欧美日韩一本到| 欧美xfplay| 最近日韩中文字幕| 日本成人超碰在线观看| 国产成人日日夜夜| 欧美日免费三级在线| 欧美精品一区二区在线播放| 亚洲视频一二三区| 奇米四色…亚洲| 91捆绑美女网站| 欧美sm极限捆绑bd| 亚洲综合小说图片| 久久国产精品99精品国产| 成人app网站| 日韩区在线观看| 一区二区三区 在线观看视频| 美女国产一区二区| 欧美性受极品xxxx喷水| 久久久三级国产网站| 爽好多水快深点欧美视频| av综合在线播放| 日韩欧美中文字幕一区| 亚洲丝袜精品丝袜在线| 国产在线精品一区二区不卡了 | 亚洲蜜臀av乱码久久精品| 老司机午夜精品| 色美美综合视频| 国产婷婷色一区二区三区在线| 亚洲国产va精品久久久不卡综合| 高清在线不卡av| 精品国产91九色蝌蚪| 亚洲福利一区二区| 91色|porny| 国产精品毛片高清在线完整版| 激情深爱一区二区| 欧美一区二区久久| 午夜伦理一区二区| 欧美三级电影在线看| 亚洲天堂成人在线观看| 成人美女视频在线观看18| 精品国产1区2区3区| 日本免费在线视频不卡一不卡二| 在线观看日产精品| 亚洲欧美另类久久久精品2019| 成人综合激情网| 久久久久99精品国产片| 极品少妇一区二区| 日韩一区二区三区免费看| 午夜伦理一区二区| 欧美日韩成人一区| 午夜欧美一区二区三区在线播放| 欧美性欧美巨大黑白大战| 一个色妞综合视频在线观看| 成人avav在线| 亚洲视频综合在线| 色综合久久天天综合网| 亚洲欧美在线观看| 99久久er热在这里只有精品15 | 中文一区一区三区高中清不卡| 国产一区二区毛片| 精品国产精品网麻豆系列| 蜜臀av亚洲一区中文字幕| 日韩免费视频一区| 久久国产精品色| 久久久一区二区三区捆绑**| 国产剧情在线观看一区二区| 久久精品亚洲一区二区三区浴池 | av一二三不卡影片| 亚洲日本电影在线| 色8久久精品久久久久久蜜| 亚洲无人区一区| 日韩午夜在线观看| 国产一区二区三区香蕉| 欧美一级专区免费大片| 天天av天天翘天天综合网色鬼国产 | 免费成人结看片| 精品福利av导航| 风间由美一区二区三区在线观看| 久久精品亚洲国产奇米99| jvid福利写真一区二区三区| 亚洲精品视频在线观看免费| 欧美日韩精品欧美日韩精品| 久久精品理论片| 亚洲国产精品成人久久综合一区| 99精品欧美一区二区三区综合在线| 亚洲欧美视频在线观看视频| 91精品久久久久久久91蜜桃| 国产制服丝袜一区| 一区二区三区自拍| 4438成人网| 91小视频在线观看| 日本系列欧美系列| 成人免费在线视频观看| 欧美色图激情小说| 国产一区美女在线|