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

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

?? huffman.cpp

?? 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
?? CPP
字號(hào):
               #include<string.h>
#include<stdlib.h>
#include<stdio.h>
int m,s1,s2;
FILE *fp1;
FILE *fp2;
FILE *fp3;
FILE *fp4;
FILE *fp5;
int j=0; long int s=0;int left;
int num[128]={0};char ch=48;
char filename[50];


typedef struct {
	char name;
    int weight;
    int parent,lchild,rchild;
}HTNode,*HuffmanTree;  HuffmanTree HT;
typedef struct {
	int weight;
	char name;
}codeweight;   codeweight cw[128];
typedef char **HuffmanCode;  HuffmanCode HC;

void Select(HuffmanTree HT,int g,int &s1,int &s2)
{
  int j,k,m,n;
    for(k=1;k<=g;k++)
     {
		if(HT[k].parent==0)
		{  s1=k;  break;}
     }
   for(j=1;j<=g;j++)
   {
    if((HT[j].weight<HT[k].weight)&&(HT[j].parent==0))
       s1=j;
   }
     for(m=1;m<=g;m++)
      {
        if((HT[m].parent==0)&&(m!=s1))
		{s2=m;break;}
      }
      for(n=1;n<=g;n++)
       if((HT[n].weight<HT[m].weight)&&(HT[n].parent==0)&&(n!=s1)) s2=n;
}
//編碼
void HuffmanCoding(HuffmanTree &HT, HuffmanCode &HC, codeweight *cw, int n)
{
	 int i,m,s1=0,s2=0;
     int c,f,start;
     char *cd;
   if (n<=1) return;
   m = 2 * n - 1;
   HT = (HuffmanTree)malloc((m+1) * sizeof(HTNode));
    for (i=1; i<=n; i++)
    {
      HT[i].weight=cw[i-1].weight;
	  HT[i].name=cw[i-1].name;
      HT[i].parent=0;
      HT[i].lchild=0;
      HT[i].rchild=0;
    }
    for (i=n+1; i<=m; i++)
    {
      HT[i].weight=0;
      HT[i].parent=0;
      HT[i].lchild=0;
      HT[i].rchild=0;
    }
   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;
   }
   HC = (HuffmanCode)malloc((n+1) * sizeof(char *));
   cd = (char *)malloc(n*sizeof(char));
   cd [n-1]='\0';
   for (i=1; i<=n; ++i)
   {
     start=n-1;
      for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent)
  	     if(HT[f].lchild==c) cd[--start]='0';
	     else cd[--start]='1';
      HC[i]=(char *)malloc((n-start)*sizeof(char));
     strcpy(HC[i],&cd[start]);
   }
free(cd);
}
//******************譯碼*****************************//
void HuffmanTran(HuffmanTree &HT,FILE *fp4,FILE *fp5,int n)
{
HuffmanTree p=HT+2*n-1;
char ch=48;
 while(1)
 {
   ch=fgetc(fp4);
   if(ch==EOF)break;
   if(ch=='0') p=HT+p->lchild;
       else if(ch=='1') p=HT+p->rchild;
    if(p->lchild==0&&p->rchild==0)
	   {
             //共n個(gè)權(quán)值中查找weigt的對(duì)應(yīng)碼
          	 fprintf(fp5,"%c",p->name);
			 p=HT+2*n-1;
       }
 }
 fclose(fp4);
 fclose(fp5);
}
 //-----函數(shù)---------





//統(tǒng)計(jì)源文件字符
void statistics_file () {                                                         
printf("請(qǐng)輸入要譯碼的文件名(例如e:\\source.txt)");
scanf("%s",filename);
if( (fp1=fopen(filename,"r"))==NULL )
{
printf("open source.txt fail!");
exit(0);
}
if( (fp2=fopen("e:\\statistics.txt","w+"))==NULL )
{
printf("create statistics.txt fail!");
fclose(fp1);
exit(0);
}
//---建樹并輸出赫夫曼編碼
   while(1)
  {
	 ch=fgetc(fp1);
	 if(ch==EOF){fseek(fp1,0,0);break;}
	 ++num[ch];
  }

  for(int i=0;i<128;i++)
  {
    if(num[i])
    {
	  fprintf(fp2,"%c %d\n",i,num[i]);
	  cw[j].name=i;cw[j].weight=num[i];
      ++j;
	}
  }
fclose(fp2); 
}                                                              
void  create_code() {                                                  
HuffmanCoding(HT,HC,cw,j);
        if((fp3=fopen("e:\\code.txt","w+"))==NULL )
             {
                printf("create code.txt fail!");
                exit(0);
             }
		for(int i=1;i <= j;i++)
            fprintf(fp3,"%c %s\n",cw[i-1].name,HC[i]);
        fclose(fp3);                                                       
}//二進(jìn)制壓縮編碼輸出
void   bin_code (){
fp4=fopen("e:\\source_code.txt","w+");
 ch=48;
 while(1)
 {
	 ch=fgetc(fp1);
	 if(ch==EOF)break;
	 for(int i=0;i<j;i++)
	    if(ch==cw[i].name)fputs(HC[i+1],fp4);
 }
fclose(fp1);
fclose(fp4);
fp1=fopen("e:\\bin_code","wb+");
fp4=fopen("e:\\source_code.txt","rb");
char bin=0; char c;
int t,x;
	 for(t=0;t<8;t++)
	 {
	    ch=fgetc(fp4);
		if(ch==EOF)
		{
                     for(left=0;left<t;left++)
                     if((bin&(1<<(7-left)))==0){c='0';fputc(c,fp1);}
                     else {c='1';fputc(c,fp1);}
		}
	    if(ch==EOF)break;
		if(ch==48)x=0;else x=1;
	     bin=bin|x<<(7-t);
	     ++s;
		 if(t==7){t=-1;fwrite(&bin,sizeof(char),1,fp1);bin=0; }
    }
fclose(fp1);
fclose(fp4);                                                              
}//二進(jìn)制編碼的譯碼輸出
void tran_code(){                                                 
 unsigned char a;
fp1=fopen("e:\\bin_code","rb");
fp4=fopen("e:\\pre2_code.txt","wb+");
for(int i=0;i<s/8;i++)
{
    fread(&a,sizeof(char),1,fp1);
    for(int t=0;t<8;t++)
    if((a&(1<<(7-t)))==0){ch='0';fputc(ch,fp4);}
    else {ch='1';fputc(ch,fp4);}
}
for(int t=0;t<left;t++)
fputc(fgetc(fp1),fp4);
fclose(fp1);
fclose(fp4);
fp4=fopen("e:\\pre2_code.txt","rb");
fp5=fopen("e:\\tran_code.txt","wb+");
HuffmanTran(HT,fp4,fp5,j);                                               
}


void main()
{
       unsigned char choice;
	   printf("***********哈夫曼編譯碼系統(tǒng)**********\n\n");
       printf("操作提示:\n");
       printf("           統(tǒng)計(jì)字符權(quán)值:<S>\n");
	   printf("           字符編碼輸出:<C>\n");
	   printf("           文件編碼輸出:<E>\n");
	   printf("           文件譯碼輸出:<D>\n");
	   printf("           退出應(yīng)用系統(tǒng):<Q>\n");
	   while(choice!='Q')
	   {   
		   printf("\n請(qǐng)選擇相應(yīng)的操作:(生成文件默認(rèn)保存在E:\)");
		   scanf("%c",&choice);
		   if (choice==10)scanf("%c",&choice);
		   switch (choice)
		   {
		    case 'S':
				{ statistics_file ();printf("\n生成字符統(tǒng)計(jì)文件statistics.txt\n");}break;
            case 'C':
				{ create_code(); printf("\n生成字符編碼文件code.txt\n");}break;
            case 'E':
				{ bin_code();printf("\n生成文件編碼文件source_code.txt二進(jìn)制壓縮編碼文件bin_code\n"); }break;
			case 'D':
				{ tran_code();printf("\n生成文件譯碼文件tran_code.txt\n");}break;
			case 'Q':
			      break;
			default :
                printf("輸入有誤,請(qǐng)重新選擇!\n");
		   }
	   }
}




?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合天天综合网国产成人综合天 | 91精品国产综合久久久久久| 久久成人免费网| 伊人性伊人情综合网| 精品欧美一区二区在线观看| 欧美视频在线播放| 91亚洲国产成人精品一区二区三 | 五月天一区二区三区| 国产精品素人一区二区| 日韩一区二区三| 欧美日韩在线三级| 91在线看国产| 不卡在线视频中文字幕| 韩国av一区二区三区在线观看 | 不卡一区中文字幕| 国产专区欧美精品| 麻豆免费精品视频| 午夜欧美视频在线观看| 亚洲综合色视频| 自拍视频在线观看一区二区| 国产亚洲福利社区一区| 欧美v日韩v国产v| 日韩欧美中文字幕公布| 91精品欧美久久久久久动漫| 欧美日韩在线三区| 欧美优质美女网站| 在线亚洲一区二区| 久久久久久一级片| 日韩欧美国产一二三区| 在线播放91灌醉迷j高跟美女 | 久久久国产精华| 国产亚洲一二三区| 国产午夜亚洲精品不卡| 国产婷婷一区二区| 欧美国产1区2区| 欧美国产激情二区三区| 国产欧美日韩精品一区| 欧美国产一区二区在线观看| 国产欧美在线观看一区| 欧美激情一区二区| 国产精品久久久久久久第一福利 | 色综合色狠狠综合色| 97国产一区二区| 色综合久久综合网97色综合 | 欧美午夜精品电影| 欧美色视频在线观看| 欧美日韩在线播放| 91精品欧美福利在线观看| 欧美大片在线观看一区| www精品美女久久久tv| 国产农村妇女精品| 自拍偷拍亚洲激情| 亚洲va欧美va人人爽午夜| 视频一区二区国产| 国内精品在线播放| 99视频精品全部免费在线| 99视频精品免费视频| 91久久精品一区二区三| 欧美日韩夫妻久久| 久久综合狠狠综合久久激情| 国产精品视频免费看| 一区二区三区四区视频精品免费| 一区二区三区91| 免费人成网站在线观看欧美高清| 韩国三级电影一区二区| 99国产精品久久| 欧美精品电影在线播放| 久久嫩草精品久久久精品| 亚洲欧洲精品成人久久奇米网| 一二三四区精品视频| 免费观看一级欧美片| 国产成人av网站| 欧美色图在线观看| 久久综合国产精品| 亚洲激情图片qvod| 极品美女销魂一区二区三区| 26uuu欧美| 尤物av一区二区| 黄页网站大全一区二区| 91在线精品一区二区| 欧美成人bangbros| 亚洲精品ww久久久久久p站| 美女视频网站久久| 99久久久免费精品国产一区二区| 3751色影院一区二区三区| 中文字幕免费在线观看视频一区| 亚洲自拍欧美精品| 国产成人综合在线观看| 欧美久久久久久蜜桃| 国产精品久久久久久久久免费桃花 | 一级日本不卡的影视| 国产一区日韩二区欧美三区| 欧美性猛交一区二区三区精品| 日本一区免费视频| 视频一区二区中文字幕| 99re这里都是精品| 久久久久久久久久久久久夜| 午夜激情综合网| 91视频观看免费| 久久久亚洲精品一区二区三区| 91在线精品一区二区三区| 国产在线麻豆精品观看| 91久久香蕉国产日韩欧美9色| 日韩精品中文字幕一区| 一区二区三区四区中文字幕| 麻豆高清免费国产一区| 在线观看一区不卡| 欧美色图第一页| 欧美国产日韩一二三区| 国产亚洲欧美日韩俺去了| 午夜精品福利视频网站| 777a∨成人精品桃花网| 免费亚洲电影在线| 日韩精品一区二区三区视频 | 奇米精品一区二区三区在线观看一 | 国产成人免费在线观看不卡| 日本一区二区三区在线观看| 成人av在线资源网站| 中文字幕中文字幕一区二区| 色综合久久66| 日韩高清国产一区在线| 亚洲精品一区二区三区福利| 国产91精品在线观看| 亚洲免费在线观看| 欧美另类高清zo欧美| 久久精品国产亚洲aⅴ| 久久久久久一二三区| 99麻豆久久久国产精品免费| 亚洲精品国产无天堂网2021 | 国产精品国产三级国产三级人妇| 91网上在线视频| 视频一区在线视频| 久久久国际精品| 99在线精品一区二区三区| 亚洲午夜精品一区二区三区他趣| 欧美一级艳片视频免费观看| 成人在线综合网站| 亚洲午夜在线电影| 欧美岛国在线观看| 99精品在线免费| 日韩在线一二三区| 欧美激情在线一区二区三区| 91国产福利在线| 国产真实乱对白精彩久久| 综合自拍亚洲综合图不卡区| 欧美群妇大交群中文字幕| 国产精品一区不卡| 亚洲一区二区三区中文字幕在线| 欧美一卡在线观看| 不卡av在线免费观看| 日韩高清一区二区| 国产精品盗摄一区二区三区| 91精品国产高清一区二区三区| www.久久精品| 免费在线看一区| 亚洲欧美视频一区| 久久久噜噜噜久噜久久综合| 欧美三级一区二区| 成人黄色av电影| 久久国产婷婷国产香蕉| 亚洲精品美腿丝袜| 国产三级精品三级在线专区| 欧美三级电影精品| www.欧美.com| 国产一区二区免费在线| 婷婷综合在线观看| 亚洲日本在线a| 久久影院电视剧免费观看| 综合欧美亚洲日本| 久久久精品中文字幕麻豆发布| 欧美美女一区二区在线观看| 不卡视频一二三| 国产精品综合视频| 日本不卡视频一二三区| 亚洲欧美日韩人成在线播放| 久久综合av免费| 欧美一级生活片| 精品视频在线免费| 色哟哟一区二区在线观看| 国产成人av电影在线观看| 日本欧美一区二区| 午夜日韩在线电影| 亚洲男人都懂的| 国产精品久久毛片a| 久久久久国产免费免费| 在线播放中文字幕一区| 欧美亚洲国产一卡| 色综合久久久久网| av色综合久久天堂av综合| 国产精品综合一区二区| 极品瑜伽女神91| 捆绑变态av一区二区三区| 亚洲不卡在线观看| 亚洲精品成人少妇| 亚洲激情av在线| 一区二区三区 在线观看视频| 亚洲日本青草视频在线怡红院 | 国产精品一品视频| 国产综合色视频| 激情六月婷婷久久|