µ±Ç°Î»ÖãºÊ×Ò³ > CÓïÑÔ´ó×÷Òµ£¨»ùÓÚ¹þ·òÂüÊ÷µÄѹËõ³ÌÐò£©
2009¼¶¡¶¸ß¼¶ÓïÑÔ³ÌÐòÉè¼Æ¡·´ó×÷ÒµÉÏ»ú±¨¸æ
ÌâÄ¿:»ùÓÚ¹þ¸¥ÂüËã·¨µÄѹËõ
²ÎÓëÈËÔ±£º
¡¾ÐÕÃû¡¿ ¡¾Ñ§ºÅ¡¿
[ÎÊÌⶨÒå] ѹËõ»ú½âѹµÄʵÏÖ [¿ª·¢¹¤¾ß] DEV-C++ [Êý¾Ý½á¹¹] struct head {
unsigned char b; /*¼Ç¼×Ö·ûÔÚÊý×éÖеÄλÖÃ*/ long count; /*×Ö·û³öÏÖÆµÂÊ£¨È¨Öµ£©*/ long parent,lch,rch; /*¶¨Òå¹þ·òÂüÊ÷Ö¸Õë±äÁ¿*/ char bits[256]; /*¶¨Òå´æ´¢¹þ·òÂü±àÂëµÄÊý×é*/ }
header[512],tmp;
tmp ÓÃÓÚ½»»»Öµ
header[512] ÓÃÓÚ´¢´æÊý¾Ý
filename[255] ÓÃÓÚ´¢´æÎļþµØÖ·
[Ëã·¨ÃèÊö]
±¾³ÌÐòÊÇ»ùÓÚ¹þ¸¥Âü±àÂëµÄ³ÌÐò
Ö÷Òª·ÖΪÁ½¸öº¯Êý£º ѹËõº¯Êý void compress() ½âѹº¯Êý void uncompress() Ö÷ÒªÁ÷³ÌÈçÏÂ
Ö÷º¯Êý ͳ¼Æ×Ö·û£¬µÃ³öͳ¼Æ³öµÄ×Ö·û ±àÂë ½âÂë Í˳ö ¸ù¾ÝȨֵ½øÐн¨Á¢¹þ·òÂüÊ÷ Êä³ö±àÂë ѹËõ±àÂë ½âѹ Êä³ö¹þ·òÂüÊ÷ Éú³ÉÎļþ Éú³ÉеÄÎļþ [Ëã·¨ÃèÊö] mainº¯Êý
Èë¿Ú ÊäÈë1 ÊäÈë2 Ö´ÐÐ Ö´ÐÐ compress() uncompress() ½áÊø
compress()º¯Êý
Èë¿Ú ÊäÈëÎļþµØÖ· µØÖ·´æÔÚu ÊäÈëѹËõºóÎļþµØÖ· ´òÓ¡´íÎó µØÖ·´æÔÚu ѹËõ£¨¾ßÌå ¼û´úÂë×¢ ÊÍ£©
´òӡѹËõ³É ¹¦ Êä³öÎļþ ´òÓ¡´íÎó
ѹËõËã·¨ 1´ò¿ªÎļþ
2Öð¸ö¶ÁÈ¡ÎļþµÄASCIIÂ룬´¢´æÔÚc£¬Í³¼ÆÆµÂÊ fread(&c,1,1,ifp)£» header[c].count++;
3ÿ¸ö¹þ·òÂüÂëÖµ¼°Æä¶ÔÓ¦µÄASCIIÂë´æ·ÅÔÚһάÊý×éheader[i]ÖÐ if(header[i].count!=0) header[i].b=(unsigned char)i; 4¾ÝƵÂÊ£¨È¨Öµ£©´óС£¬¶Ô½áµã½øÐÐÅÅÐò 5¹¹½¨¹þÂüÊ÷£¬ÑÇ´ËÑ¡ÔñȨֵ×îСµÄÈëÊ÷ 6¼ÆËãȨֵ´óС
7´ÓÎļþ¿ªÊ¼½«×Ö·û±àÂëÿ8¸÷±àÈëÒ»¸ö×Ö½Ú£¬Ê£Ï³¬¹ý4λÔÙ±àÈëÏÂÒ»¸ö£¬ ÉÙÓÚ4룬Ôò·ÅÈëÐÂ×Ö½Ú
uncompress()º¯Êý
Èë¿Ú ÊäÈëÎļþµØÖ·
µØÖ·´æÔÚu
ÊäÈëѹËõºóÎļþµØÖ· ´òÓ¡´íÎó
µØÖ·´æÔÚu
½âѹ£¨¾ßÌå´òÓ¡´íÎó ¼û³ÌÐò×¢ ÊÍ£©
ÊäÈë½âѹ³É ¹¦
½âѹËã·¨
1¶ÁÈ¡ÔÎļþ³¤¶È£¬¶ÔÎļþ½øÐж¨Î» fread(&flength,sizeof(long),1,ifp); 2È¡ÔÎļþ×Ö·ûµÄȨֵ p=(long)c;
3½« fת»»Îª¶þ½øÖƱíʾµÄ×Ö·û´® itoa(f,buf,2);
4¾Ý¹þ·òÂü±àÂëµÄ³¤¶Ì£¬¶Ô½áµã½øÐÐÅÅÐò 5¸ù¾Ý¹þ·òÂü±àÂëµÄ³¤¶Ì£¬¶Ô½áµã½øÐÐÅÅÐò
6ͨ¹ý¹þ·òÂü±àÂëµÄ³¤¶Ì£¬ÒÀ´Î½âÂ룬´ÓÔÀ´µÄλ´æ´¢»¹Ôµ½×Ö½Ú´æ´¢ 7ÔÚµ¥×Ö½ÚÄÚ¶ÔÏàӦλÖò¹0
8´ÓѹËõÎļþÖеݴλ´æ´¢»¹Ôµ½°´×Ö½Ú´æ´¢×Ö·û£» ×Ö·ûλÖò»¸Ä±ä
¹²·ÖÏí92ƪÏà¹ØÎĵµ