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

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

?? 哈夫曼樹最優搜索算法.cpp

?? 哈夫曼樹最優搜索算法。歡迎使用haffman編/譯碼程序
?? CPP
字號:

#include<iostream.h>
#include<malloc.h>
#include<string.h>
#include<iomanip.h>


struct htnode
{
    char data;
 int weight;
 int parent;
 int lchild;
 int rchild;
}*ht,*p; 

   int s1,s2,t,n;
   char**hc,*ch,get='0';

 void selete(htnode*hc,int k,int*s1,int*s2); 

 void Encoding();
 void printcode();
 char q();
 void Init();
 void Decoding();
 void Printtree();
 

 void  main() //*************************************************************主函數
 {                       
    cout<<"\n                        歡迎使用haffman編/譯碼程序\n\n";
    cout<<"               本程序是對報文進行---①編碼  ②譯碼 ③ 打印等 \n\n";
    cout<<"             請根據需要(選擇性) 操作   (注意:若未初始化則會出錯)\n\n";
    cout<<"                   程序制作者:   陸建軍  陸重道  陸振海  \n\n";
	cout<<"                   ************讓我們開始吧!!**********\n\n";
    cout<<"   ";
	int i; 
    for(i=1;i<=37;i++)  cout<<"* ";    
	cout<<"\n   *   初始化:1   編碼:2  譯碼:3   打印代碼:4 ";
    cout<<"打印樹存儲結構:5  退出:6   *\n";cout<<"   ";
	for(i=38;i>1;i--)	cout<<"* ";  
	 
      loop1:  
      get=q();   
      loop2:
      cin>>get;   
	  switch(get){
    case'1':{	Init();         goto loop1;  }  
	case'2':{   Encoding();     goto loop1;  }
	case'3':{   Decoding();     goto loop1;  }
    case'4':{	printcode();    goto loop1;  }
	case'5':{   Printtree();    goto loop1;  }
	case'6':{   cout<<setw(40)<<"\n您已經退出該程序*********";
				cout<<"謝謝使用本程序!!!\n\n\n\n\n"; break;  } 
    default:{   cout<<setw(30)<<"\n對不起您選擇出錯!!!\n\n\n";
		        cout<<"請再選擇:  ";    goto loop2;  } } 	 
 }

char q()  //********************************************************菜單
{cout<<"\n\n\n請選擇:  ";	return 0;}

void selete(htnode*hc,int k,int*s1,int*s2)//**************尋找兩個小權值
{
	    signed long m1=1000,m2=1000;
		for(int j=1;j<=k;j++)
		{
			if(hc[j].weight<m1&&hc[j].parent==0)
			{
				m2=m1;
				*s2=*s1;
				m1=hc[j].weight;
				*s1=j;
			}
			else if(hc[j].weight<m2&&hc[j].parent==0)
			{
				m2=hc[j].weight;
				*s2=j;
			}
		}
}


void Init()        //******************************************初始化函數
{	int m=0;      
	int*weit;        
	char*a,*cd;
	 
	cout<<"\n\n請輸入葉子結點的 總個數n:   ";
	cin>>n;  
	weit=(int*)malloc((n+1)*sizeof(int)); 
	a=(char*)malloc((n+1)*sizeof(char)); 
	
	cout<<"\n請輸入報文串:";
	cout<<"(形如:You_are_good ....   ( 空格用  \" _ \"  代替 )    [回車]  ";
	cout<<"\n\n***********報文串為:";
	for(int i=1;i<=n;i++) 
	{
		cin>>a[i]; 
	}

	cout<<"\n\n請輸入n個權值:";
	cout<<"(形如:14 52 70 ...      ( 各權值間用(空格)隔開 )    [回車]";
    cout<<"\n\n\n*****對應的權植序列:";
	for( i=1;i<=n;i++)  
	{
		cin>>weit[i]; 
	}

	
	m=2*n-1;                          
	if((ht=new htnode[m+1])==NULL)
	{
		cout<<"分配內存失敗!!\n";
	}
	for(i=1,p=ht,++p;i<=n;++i,++p)
	{
		p->data=a[i];   
		p->weight=weit[i];
		p->parent=0;
		p->lchild=0;
		p->rchild=0;	}
	for(i=n;i<=m;++i,++p)
	{
		p->data=NULL;   
		p->weight=0;
		p->parent=0; 
		p->lchild=0;
		p->rchild=0;
	}
	for(i=n+1;i<=m;++i)
	{
		selete(ht,i-1,&s1,&s2);    
		ht[s1].parent=i;      
		ht[s2].parent=i;
		if(s1<s2)
		{
			ht[i].lchild=s1;	
			ht[i].rchild=s2;
		}
		else
		{
			ht[i].lchild=s2; 
			ht[i].rchild=s1;}
		ht[i].weight=ht[s1].weight+ht[s2].weight;
	}
    if((hc=(char**)malloc((n+1)*sizeof(char)))==NULL )
	{
		cout<<"分配內存失敗\n";	
	}
	if((cd=(char*)malloc((n)*sizeof(char)))==NULL) 
	{
		cout<<"分配內存失敗\n";	
	}
	
	cd[n-1]='\0'; 
	for(i=1;i<=n;++i)   
	{	
		int start=n-1;    
		for(long 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';
		}

		if((hc[i]=(char*)malloc((n-start)*sizeof(char)))==NULL)
		{
			cout<<"內存分配失敗\n";
		}
		strcpy(hc[i],&cd[start]);   
	}
	free(cd);
    cout<<"\n\n初始化 OK 了!********請進行其它操作!!!";
}



void Encoding()     //**************************************************編碼
{
	if(ht==NULL)  
	{
	cout<<endl;
	cout<<setw(59)<<"對不起您還沒有:沒有初始化****      請重新選擇\n\n";
		return;
	}
	else{

		int i=1,j=0;	
          char  ch[128];               
	      cout<<"請輸入上面報文串: ";
		  cin>>ch;
		 
		  cout<<"\n字符串 "<<ch<<" 的編碼為:  ";
		  do{
			  for(i=1;ch[j]!=ht[i].data;i++);
			  {
				  cout<<hc[i]<<" "; 
			  if(i%15==0)cout<<"                               \n\n\n";}
		  j++;
		  }while(ch[j]!='\0');            
		}
}
void Decoding() //*************************************************************譯碼
{
	if(ht==NULL)cout<<setw(59)<<"對不起您還沒有:沒有初始化*****  請重新選擇\n\n";
	else{
	int m=0;
	char de[200];
	cout<<"輸入編碼串:";
	cin>>de;
      cout<<"\n\n編碼串"<<de<<" 對應的字符為:\n\n     ";
	do{
		int i=2*n-1;       
		for(;ht[i].lchild!=0 ;m++)  
		{
			if(de[m]=='0')         
			{ i=ht[i].lchild;}
			else  {i=ht[i].rchild;}
		}
		cout<<ht[i].data<<"  ";
	}while(de[m]!='\0');     
	cout<<"\n\n";
	}
}
void  printcode() // **************************************************打印報文代碼
{

	int i;
	if(ht==NULL){
		cout<<setw(59)<<"對不起您還沒有:初始化*****        請重新選擇\n\n";
	}
	else{
		cout<<"\n\n編碼文件打印結果為:\n\n";
	for(i=1;i<=n;++i)
	{cout<<setw(10)<<i<<setw(7)<<ht[i].data<<"       "<<hc[i];cout<<"\n\n";}
    cout<<"\n\n";
	return;
	}
}

void Printtree()    //****************************************************打印樹的結構圖
{ 
	if(ht==NULL)cout<<setw(59)<<"對不起您還沒有:沒有初始化*****    請重新選擇\n\n";
	else{int i;      
		cout<<"\n\n         *****打印******哈夫曼樹***存儲結構******圖表****** \n\n";   
		cout<<"  number"<<"       data   "<<"   weight";
		cout<<"      parent"<<"     lchilde"<<"     rchlide\n";

		for(i=1;i<=2*n-1;i++)   
		{cout<<setw(6)<<i<<setw(12)<<ht[i].data<<setw(10)<<ht[i].weight<<setw(12);
		 cout<<ht[i].parent<<setw(12)<<ht[i].lchild<<setw(12)<<ht[i].rchild<<"\n\n"; }

	   	cout<<"\n\n\n\n";
  	 
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美一区二区在线| 亚洲一区二区三区在线| 久久国产尿小便嘘嘘| 欧美一区二区性放荡片| 欧美aaa在线| 久久久午夜精品理论片中文字幕| 精品亚洲成a人| 国产区在线观看成人精品| av男人天堂一区| 亚洲精品一二三区| 777午夜精品视频在线播放| 美国毛片一区二区三区| 国产午夜精品理论片a级大结局| 国产999精品久久久久久绿帽| 亚洲婷婷在线视频| 欧美唯美清纯偷拍| 美女一区二区三区| 国产精品三级视频| 日本丶国产丶欧美色综合| 日韩精品电影在线观看| xf在线a精品一区二区视频网站| 国产成人午夜99999| 亚洲麻豆国产自偷在线| 日韩午夜在线影院| 99精品视频一区二区三区| 亚洲一区二区三区免费视频| 欧美一区二区大片| 成人av综合在线| 午夜激情一区二区| 国产偷国产偷精品高清尤物| 色丁香久综合在线久综合在线观看| 天天综合网天天综合色| 久久精品一区蜜桃臀影院| 91福利在线看| 国产精品1024| 日韩电影在线免费| 国产精品久久久久久久久久久免费看 | 欧美一区二区在线看| 成人综合在线网站| 首页综合国产亚洲丝袜| 国产精品国产三级国产| 欧美一级二级在线观看| 色综合夜色一区| 国产精品亚洲午夜一区二区三区 | 日韩精品高清不卡| 17c精品麻豆一区二区免费| 欧美成人bangbros| 欧美三级蜜桃2在线观看| 国产成a人无v码亚洲福利| 日韩电影在线一区二区三区| 亚洲免费观看在线视频| 国产女同互慰高潮91漫画| 3d动漫精品啪啪一区二区竹菊 | 国产农村妇女毛片精品久久麻豆| 欧美性受极品xxxx喷水| 成人性视频免费网站| 久久精品99国产国产精| 亚洲国产精品久久人人爱| 中文字幕在线不卡一区二区三区| 日韩欧美中文一区二区| 欧美色综合网站| gogo大胆日本视频一区| 国产乱人伦偷精品视频免下载| 日日摸夜夜添夜夜添精品视频 | 日本一区二区在线不卡| 欧美日韩国产系列| 欧美视频在线观看一区二区| 91在线视频官网| 成人成人成人在线视频| 高清shemale亚洲人妖| 国产综合久久久久久鬼色| 青青草国产精品亚洲专区无| 亚洲国产精品一区二区久久恐怖片| 国产精品嫩草久久久久| 日本一区二区在线不卡| 久久精品视频一区| 国产午夜精品一区二区三区嫩草 | 日韩欧美精品在线视频| 欧美裸体一区二区三区| 欧美丰满高潮xxxx喷水动漫| 欧美日韩二区三区| 欧美高清一级片在线| 欧美另类一区二区三区| 欧美精品日韩精品| 日韩一区二区三区视频| 欧美一级片免费看| 日韩一级免费观看| 精品av久久707| 久久久国产综合精品女国产盗摄| 久久网站热最新地址| 国产亚洲va综合人人澡精品| 欧美韩日一区二区三区| 国产精品久久免费看| 亚洲男同1069视频| 亚洲成年人影院| 日本不卡一区二区三区| 九九九精品视频| 国产精品888| a级精品国产片在线观看| 色成年激情久久综合| 欧美精品日韩一区| 欧美一二区视频| 国产亚洲福利社区一区| 亚洲免费毛片网站| 蜜桃视频第一区免费观看| 精品一区二区日韩| 国产成人免费av在线| 色94色欧美sute亚洲13| 91精品国产手机| 久久久久久毛片| 亚洲精品乱码久久久久| 日本中文字幕一区| 国产不卡在线一区| 欧美日韩一区精品| 久久久久久久综合| 亚洲免费观看高清| 美国av一区二区| 色综合天天综合狠狠| 日韩一级片网站| 国产精品剧情在线亚洲| 亚洲成人1区2区| 成人午夜视频在线观看| 欧美日韩激情一区| 国产精品天干天干在线综合| 亚洲高清在线精品| 国产91高潮流白浆在线麻豆| 欧美亚男人的天堂| 中文字幕国产一区二区| 午夜欧美在线一二页| 国产成人在线视频网站| 884aa四虎影成人精品一区| 国产精品午夜在线| 日韩国产一二三区| 91丨porny丨首页| 精品国产精品一区二区夜夜嗨| 国产精品久久综合| 国产精品一级二级三级| 欧美三级欧美一级| 亚洲精品伦理在线| 丁香激情综合国产| 亚洲精品在线免费观看视频| 亚洲午夜私人影院| 9i在线看片成人免费| 欧美精品一区二区在线观看| 尤物av一区二区| 国产91丝袜在线观看| 日韩欧美你懂的| 欧美a一区二区| 3d动漫精品啪啪一区二区竹菊| 亚洲精品成人在线| 成人av在线观| 国产视频一区不卡| 久久精品久久99精品久久| 欧美视频在线一区| 一区二区在线观看视频| 99久久综合精品| 国产精品久久网站| 成人av第一页| 国产女同性恋一区二区| 国产精品亚洲一区二区三区妖精| 欧美xxxxx牲另类人与| 免费视频最近日韩| 91精品国产综合久久香蕉的特点| 艳妇臀荡乳欲伦亚洲一区| 色综合天天综合网天天看片| **欧美大码日韩| 99久久婷婷国产综合精品| 国产精品视频一二三区| 成人在线一区二区三区| 国产精品网站在线| 91在线看国产| 一区二区三区在线播| 色婷婷久久久综合中文字幕| 亚洲视频香蕉人妖| 色呦呦一区二区三区| 亚洲卡通动漫在线| 欧美在线观看一区二区| 午夜成人免费视频| 日韩一级成人av| 久久99精品一区二区三区三区| 日韩精品中文字幕在线不卡尤物| 日韩**一区毛片| 久久奇米777| 99免费精品视频| 亚洲国产精品一区二区久久恐怖片| 91福利国产精品| 日韩黄色免费电影| 26uuu另类欧美亚洲曰本| 国产高清在线观看免费不卡| 精品理论电影在线| 久久国产夜色精品鲁鲁99| 久久在线观看免费| 丁香婷婷深情五月亚洲| 亚洲免费看黄网站| 日韩视频免费观看高清完整版在线观看| 欧美aaa在线| 综合色天天鬼久久鬼色| 欧美酷刑日本凌虐凌虐| 韩国一区二区在线观看| 亚洲手机成人高清视频|