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

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

?? main.cpp

?? 著名的LZW壓縮和解壓的C++實現
?? CPP
字號:
////////////////////////////////////////////////////////////////////////////
////////                                                            ////////
////////                  利用哈希表完成LZW壓縮與解壓               ////////
////////                                               by 施瑋喆    ////////
////////                                               5060309818   ////////
////////                                               2007--11-5   ////////
////////                                                            ////////
////////////////////////////////////////////////////////////////////////////


#include<iostream.h>
#include<stdio.h> 
#include<stdlib.h> 
#include<malloc.h> 
#include<string.h> 
#include<math.h> 
#include"hash.h"



int mark=0;
int status=0;
int LeftOver;



void Output(unsigned long pcode,FILE* file,int& out)
{
   unsigned char a,b;
   if(mark)                                      //有上次剩余的4位
   {
	   b=pcode & 255;
	   a=(LeftOver << 4) | (pcode >> 8);
	   fprintf(file,"%c",a);
	   fprintf(file,"%c",b);
	   out=out+2;
	   mark=0;
   }
   else                                         //沒有剩余
   {
	   LeftOver=pcode & 15; 
	   a=pcode >> 4;
	   fprintf(file,"%c",a);
	   out++;
	   mark=1;
   }
}



bool Getcode(int& code,FILE* file)
{                                           
	char a,b;
	int c,d;
	a=fgetc(file);
	if(feof(file)) return false; 
	if(status)
	{
		c=a & 255;
		code=(LeftOver << 8) | c;
	}
	else 
	{
		b=fgetc(file);
		c=a & 255;
		d=b & 255;
		code=(c << 4) | (d >> 4);
		LeftOver=d & 15;
	}
	status=1-status;
	return true;
}



void Print(int code,int& n,unsigned char s[4096],element ht[4096],FILE* file)
{
   n=-1;
   while(code>=256)
   {
	   s[++n]=ht[code].suffix;
	   code=ht[code].prefix;
   }
   s[++n]=code;
   for(int i=n;i>=0;i--)
	   fprintf(file,"%c",s[i]);
}



void Compress(char fori[30],char fcom[30])       //LZW壓縮器
{
   FILE* forigin=fopen(fori,"rb");
   FILE* fcompress=fopen(fcom,"wb");

   hashnode* P=new hashnode[D];                    //定義并初始化代碼字典
   hashnode* T;
   for(int i=0;i<D;i++) P[i].link=NULL;
   part e;
   char ch;
   int temp,in=1,out=0;
   int s;
   
   for(i=0;i<256;i++)
   {
	   e.key=i;
	   e.code=i;
	   insert(P,e);
   }
   int used=256;                                 //記錄當前code用到的數

   ch=fgetc(forigin);                            //輸入文件中的第一個字符
   unsigned long pcode=ch; 
   if (!feof(forigin))
   {
	   do{
		   ch=fgetc(forigin);
		   in++;
		   if(feof(forigin)) 
			   break; 
		   s=ch & 255;
		   unsigned long k=(pcode << 8) | s;
		   if(search(P,k,temp))
			   pcode=temp;
		   else
		   {
			   Output(pcode,fcompress,out);
			   if(used>=4096)                              //刷新字典
			   {
				   T=P;
				   delete T;
				   P=new hashnode[D];
				   for(int i=0;i<D;i++) P[i].link=NULL;
				   for(i=0;i<256;i++)
				   {
					   e.key=i;
					   e.code=i;
					   insert(P,e);
				   }
				   used=256;         
			   }
			   e.code=used++;
			   s=ch & 255;
			   e.key=(pcode << 8) | s;
			   insert(P,e);
			   pcode=ch;
		   }
	   }while(1);
	   Output(pcode,fcompress,out);
	   if(mark)
	   {
		   ch=LeftOver << 4;
		   fprintf(fcompress,"%c",ch);
		   out++;
	   }
   }
   fclose(forigin);
   fclose(fcompress);
   cout<<"壓縮成功,壓縮比為:"<<out*100/in<<"%\n";
}


void Decompress(char fcom[30],char fori[30])     //LZW解壓器
{
	FILE* fcompress=fopen(fcom,"rb");
	FILE* forigin=fopen(fori,"wb");
	
	int n=0;
	int used = 256;                              // 迄今所使用的代碼
	int pcode,ccode;                             // 前一代碼與當前代碼
	element ht[4096];
	unsigned char s[4096];
	
	if(Getcode(pcode,fcompress))
	{
		s[0]=pcode;  
		fprintf(forigin,"%c",s[0]);
		
		while(Getcode(ccode,fcompress))
		{
			if(ccode<used)                    // ccode已在字典中
			{
				Print(ccode,n,s,ht,forigin);
				if(used>=4096) used=256;
				
				ht[used].prefix=pcode;
				ht[used++].suffix=s[n];
				
			}                                    
			else
			{
				ht[used].prefix=pcode;
				ht[used++].suffix=s[n];
				Print(ccode,n,s,ht,forigin);
			}
			pcode=ccode;
		}
	}
	fclose(fcompress);
	fclose(forigin);
	cout<<"解壓成功\n";
}



int main() 
{ 
    cout<<"//////////////////////////////////////////////////////////////"<<endl;
    cout<<"////                                                      ////"<<endl;
    cout<<"////      利用哈希表完成LZW壓縮與解壓                     ////"<<endl;
    cout<<"////                                   姓名: 施瑋喆      ////"<<endl;
    cout<<"////                                   學號: 5060309818  ////"<<endl;
    cout<<"////                                   班級: F0603031    ////"<<endl;
    cout<<"////                               完成時間: 2007-11-5   ////"<<endl;
    cout<<"////                                                      ////"<<endl;
    cout<<"//////////////////////////////////////////////////////////////"<<endl<<endl;

	char choice,fori[30],fcom[30];

	while(1)
	{
		cout<<"****************************************************************\n";
		cout<<" 1   --   Compress\n";
		cout<<" 2   --   Decompress\n";
		cout<<" 3   --   Quit\n";
		cout<<"****************************************************************\n";
		cout<<" what to do : ";
		cin>>choice;
		switch(choice){
		case '1':
			{
				cout<<"請輸入要壓縮的文件名: "; 
				cin>>fori; 
				cout<<"請輸入壓縮后的保存文件名: "; 
				cin>>fcom; 
				Compress(fori,fcom);
			}
			break;
		case '2':
			{
				cout<<"請輸入要解壓縮的文件名: "; 
				cin>>fcom; 
				cout<<"請輸入解壓縮后的保存文件名: "; 
				cin>>fori; 
				Decompress(fcom,fori);
			}
			break;
		case '3':
			return 0;
		default:
			cout<<"Wrong input!";
		}
	}

	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91蜜桃婷婷狠狠久久综合9色| 性做久久久久久久免费看| 亚洲成在人线免费| 成人av在线观| 精品国产青草久久久久福利| 亚洲综合小说图片| 波多野结衣在线一区| 久久蜜臀中文字幕| 久久精品国产99国产精品| 欧美精品久久99久久在免费线| 一区二区免费在线| 精品视频全国免费看| 亚洲综合在线视频| 欧美喷水一区二区| 日韩av网站免费在线| 欧美视频自拍偷拍| 婷婷开心激情综合| 精品久久99ma| 成人性生交大片免费| 亚洲欧洲日韩一区二区三区| 色偷偷成人一区二区三区91 | 欧美国产日韩在线观看| 成人午夜伦理影院| 国产精品久久久久久久久晋中 | 97se亚洲国产综合自在线不卡| 国产亚洲一二三区| 懂色av一区二区三区免费观看| 久久精品一区二区三区不卡牛牛| 高清成人免费视频| 国产日本欧洲亚洲| 在线看日本不卡| 午夜伦欧美伦电影理论片| 精品噜噜噜噜久久久久久久久试看 | 一区二区三区四区蜜桃| 欧美一区二区三区喷汁尤物| 国产精品一卡二卡在线观看| 自拍av一区二区三区| 欧美在线视频日韩| 韩国在线一区二区| 亚洲一区二区视频在线| 精品国产伦一区二区三区观看方式| 成人免费不卡视频| 开心九九激情九九欧美日韩精美视频电影| 久久精品在线免费观看| 精品1区2区3区| 成人高清视频在线| 蜜桃视频在线观看一区| 亚洲三级电影网站| 久久久激情视频| 欧美一级生活片| 欧美日韩色一区| 日本高清成人免费播放| 成人精品视频一区二区三区 | 视频一区二区三区在线| 亚洲一级片在线观看| 亚洲乱码国产乱码精品精的特点| 亚洲国产经典视频| 国产日本欧洲亚洲| 国产片一区二区三区| 久久精品欧美一区二区三区麻豆 | 亚洲成人激情综合网| 国产成人在线免费观看| 91麻豆高清视频| 777色狠狠一区二区三区| 夜夜夜精品看看| 色婷婷激情久久| 亚洲精品大片www| 在线中文字幕一区| 亚洲欧美国产三级| 色香蕉成人二区免费| 夜夜嗨av一区二区三区网页| 91福利国产精品| 亚洲一级不卡视频| 色一情一伦一子一伦一区| 一区二区三区四区蜜桃| 在线亚洲高清视频| 亚洲综合视频在线观看| 欧日韩精品视频| 水蜜桃久久夜色精品一区的特点| 亚洲精品视频自拍| 欧洲精品一区二区| 午夜av一区二区三区| 欧美一区二区三区免费| 精品一区在线看| 久久久久久久久久久99999| 东方aⅴ免费观看久久av| 中文字幕一区二区日韩精品绯色| 99国产精品久久久| 亚洲综合丝袜美腿| 欧美一区二区免费视频| 国产美女一区二区| 国产精品区一区二区三区| 91视视频在线直接观看在线看网页在线看 | 99国产精品国产精品毛片| 中文字幕制服丝袜成人av| 一本色道久久综合亚洲aⅴ蜜桃 | 国产精品美女一区二区三区| 91精品久久久久久久久99蜜臂| 国产成人av福利| 99久久久精品| 99这里只有精品| 一本色道久久综合亚洲91 | 亚洲第一福利一区| 午夜视频在线观看一区| 欧美一卡二卡三卡| 久久66热偷产精品| 国产精品久久99| 欧美三级视频在线| 韩国理伦片一区二区三区在线播放| 亚洲国产激情av| 不卡一区二区三区四区| 一区二区三区中文字幕| 91精品国模一区二区三区| 粗大黑人巨茎大战欧美成人| 亚洲国产人成综合网站| 久久青草欧美一区二区三区| 色久优优欧美色久优优| 激情欧美一区二区三区在线观看| 亚洲丝袜另类动漫二区| 日韩欧美亚洲一区二区| 色综合久久久久综合体桃花网| 视频一区二区不卡| 中文在线资源观看网站视频免费不卡| 在线看一区二区| 国产激情91久久精品导航| 亚洲另类春色国产| 国产亚洲精品超碰| 欧美日韩国产另类不卡| 成人免费视频一区| 蜜桃一区二区三区四区| 一区二区三区不卡视频在线观看| 精品国产精品一区二区夜夜嗨| 色婷婷亚洲综合| 国产福利精品一区二区| 婷婷久久综合九色综合伊人色| www久久精品| 欧美mv日韩mv| 欧美伦理视频网站| 色又黄又爽网站www久久| 国产福利精品一区| 精品一区二区精品| 亚洲不卡一区二区三区| 亚洲欧美偷拍三级| 国产欧美一区二区三区鸳鸯浴 | 图片区小说区区亚洲影院| 国产精品乱码一区二区三区软件| 91麻豆精品国产91| 欧美色网一区二区| 91丨porny丨蝌蚪视频| 国产成人精品三级| 精品一区二区国语对白| 日韩av在线播放中文字幕| 亚洲欧美一区二区视频| 中文字幕一区二区三区在线观看| 精品sm在线观看| 欧美大胆人体bbbb| 在线成人av网站| 欧美中文字幕一二三区视频| www.亚洲色图| 高清视频一区二区| 国产一区二区三区四区五区美女 | 国产女主播在线一区二区| 欧美大片日本大片免费观看| 欧美性极品少妇| 91麻豆自制传媒国产之光| voyeur盗摄精品| 国产成a人亚洲精品| 国产大陆精品国产| 舔着乳尖日韩一区| 日本不卡一区二区三区| 性做久久久久久| 午夜视频在线观看一区| 视频一区欧美精品| 日本视频免费一区| 日本aⅴ亚洲精品中文乱码| 人人狠狠综合久久亚洲| 老鸭窝一区二区久久精品| 日本中文字幕不卡| 美女爽到高潮91| 国产综合久久久久久鬼色| 国产一区二区视频在线| 国产精品一区免费在线观看| 韩国女主播成人在线| 丰满白嫩尤物一区二区| 不卡一区中文字幕| 色域天天综合网| 欧美日韩国产影片| 91精品国产一区二区| 日韩一区二区在线观看视频| 精品日韩成人av| 国产午夜亚洲精品不卡| 国产亚洲一区二区三区在线观看 | 91国产福利在线| 欧美剧情电影在线观看完整版免费励志电影 | 国产精品久久久久久久久久久免费看| 国产精品久久777777| 亚洲激情成人在线| 日韩一区中文字幕| 日韩电影网1区2区| 国产精选一区二区三区|