91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

Huffman編碼與解碼 (選做)(Huffman編碼、二叉樹) [問題描述]    對一篇英文文章,統(tǒng)計各字符出現(xiàn)的次數(shù),實現(xiàn)Huffman編碼,以及對編碼結果的解碼。 [基本要求] (1) 輸出每個字符出現(xiàn)的次數(shù)和編碼,其中求最小權值要求用堆實現(xiàn)。 (2) 在Huffman編碼后,要將編碼表和英文文章編碼結果保存到文件中,編碼結果必須是二進制形式,即0 1的信息用比特位表示,不能用字符’0’和’1’表示。 (3) 提供讀編碼文件生成原文件的功能。

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?
using?namespace?std;

typedef?struct?{
int?weight;
int?parentlchildrchild;
}HTNode;
typedef?char?**HuffmanCode;

HTNode?HT[5000];
HuffmanCode?HC;
char?*cd;
#define?code_LEN?10000
char?Letter[5000]c;
int?Fre_Letter[5000];
int?Num_Letter;
int?Hr[5000];
int?size=0;
int?HeapLength;

void?init()
{
int?findi;
Num_Letter=0;
FILE?*fpin;
fpin?=?fopen(“a.txt““r“);
while((c?=?fgetc(fpin))!=?EOF)
{
find=0;
for?(i=1;i<=Num_Letter;i++)
{
if?(Letter[i]==c)
{
Fre_Letter[i]++;
find=1;
break;
}
}
if?(find==0)
{
Num_Letter++;
Letter[Num_Letter]=c;
Fre_Letter[Num_Letter]=1;
}
}
fclose(fpin);
for?(i=1;i<=Num_Letter;i++)
cout<}

void?HeadAdjust(int?s?int?m)?//堆排序中的節(jié)點維護
{
int?rcj;
rc?=?Hr[s];
for?(j=2*s;?j<=m;?j*=2)
{
if?(j if?(HT[rc].weight<=HT[Hr[j]].weight)?break;
????Hr[s]?=?Hr[j];?s=?j;
}
Hr[s]?=?rc;
}
void?HuffmanCoding(int?*wint?n){

int?ms1is2;
if?(n<=1)?return;
m=2*n-1;
HT[0].weight=23423432;
for?(i=1;i<=n;i++)
{
HT[i].weight?=?w[i];
HT[i].lchild?=?NULL;
HT[i].rchild?=?NULL;
HT[i].parent?=?NULL;
}
for?(i=n+1;i<=m;i++)
{
HT[i].weight=0;
HT[i].lchild?=?NULL;
HT[i].rchild?=?NULL;
HT[i].parent?=?NULL;
}
for?(i=1;i<=n;i++)
????????Hr[i]=i;
????for(i?=?n/2;?i>0;?i--)????//堆排序預處理
???HeadAdjust(in);
for?(i=n+1;i<=m;i++)
{
s1?=?Hr[1];
????????Hr[1]?=?0;
HeadAdjust(1n);
s2?=?Hr[1];
HT[i].weight?=?HT[s1].weight+HT[s2].weight;
HT[i].lchild?=?s1;
HT[i].rchild?=?s2;
HT[s1].parent?=?i;
HT[s2].parent?=?i;
Hr[1]?=?i;
HeadAdjust(1n);
}
HC=(HuffmanCode)malloc(Num_Letter*code_LEN*5*sizeof(char));
cd=(char?*)malloc(5*code_LEN*sizeof(char));
cd[n-1]=‘\0‘;
for?(i=1;i<=n;i++)
{
????int?start=n-1;
????int?cf;
for?(c=if=HT[i].parent;f!=0;c=ff=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?PrintHuffmanCode()
{
FILE?*fpin*fpout;
int?i;
for?(i=1;i<=Num_Letter;i++)
cout< fpin?=?fopen(“a.txt““r“);
fpout=?fopen(“b.txt““w“);
cout< while((c?=?fgetc(fpin))!=?EOF)
{
for?(i=1;i<=Num_Letter;i++)
if?(Letter[i]==c)
{
fprintf(fpout“%s“HC[i]);
break;
}
}
fclose(fpin);
????fclose(fpout);
}


void?GetHuffmanCode()
{
????char?*cd;
????int?tiflag;
????t=0;
FILE?*fpin*fpout;
cd=(char?*)malloc(code_LEN*sizeof(char));
fpout=?fopen(“d.txt““w“);
fpin?=?fopen(“b.txt““r“);
while((c?=?fgetc(fpin))!=?EOF)
{
????????cd[t]=c;
flag=0;
cd[t+1]=‘\0‘;
????????for?(i=1;i<=Num_Letter;i++)
????????????if?(strcmp(cdHC[i])==0)
?????

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2012-03-06?16:32??7Huffman編碼與解碼\
?????文件??????????45??2011-12-22?20:19??7Huffman編碼與解碼\1.txt
?????文件??????????44??2011-12-22?20:19??7Huffman編碼與解碼\2.txt
?????文件??????????45??2011-12-22?20:20??7Huffman編碼與解碼\3.txt
?????目錄???????????0??2012-03-06?16:32??7Huffman編碼與解碼\7\
?????文件????????3341??2011-12-21?11:05??7Huffman編碼與解碼\7.dsp
?????文件?????????510??2011-12-21?11:05??7Huffman編碼與解碼\7.dsw
?????文件???????41984??2011-12-21?11:05??7Huffman編碼與解碼\7.ncb
?????文件???????48640??2011-12-21?11:05??7Huffman編碼與解碼\7.opt
?????文件????????2258??2011-12-21?11:05??7Huffman編碼與解碼\7.plg
?????文件????????3351??2011-12-21?22:42??7Huffman編碼與解碼\70.cpp
?????文件????????3353??2011-12-22?21:55??7Huffman編碼與解碼\70.dsp
?????文件?????????512??2011-12-22?21:56??7Huffman編碼與解碼\70.dsw
?????文件???????33792??2011-12-22?21:56??7Huffman編碼與解碼\70.ncb
?????文件???????48640??2011-12-22?21:56??7Huffman編碼與解碼\70.opt
?????文件????????1099??2011-12-22?21:55??7Huffman編碼與解碼\70.plg
?????文件????????3341??2011-12-21?19:07??7Huffman編碼與解碼\7\7.dsp
?????文件?????????508??2011-12-21?19:14??7Huffman編碼與解碼\7\7.dsw
?????文件??????912145??2011-12-21?22:48??7Huffman編碼與解碼\7\7.exe
?????文件???????41984??2011-12-21?19:14??7Huffman編碼與解碼\7\7.ncb
?????文件????????5489??2011-12-21?22:48??7Huffman編碼與解碼\7\7.o
?????文件???????48640??2011-12-21?19:14??7Huffman編碼與解碼\7\7.opt
?????文件?????????236??2011-12-21?19:14??7Huffman編碼與解碼\7\7.plg
?????文件????????4648??2011-12-22?11:39??7Huffman編碼與解碼\7\71.cpp
?????文件????????3353??2011-12-22?19:58??7Huffman編碼與解碼\7\71.dsp
?????文件?????????510??2011-12-22?19:58??7Huffman編碼與解碼\7\71.dsw
?????文件??????912147??2011-12-21?23:41??7Huffman編碼與解碼\7\71.exe
?????文件???????41984??2011-12-22?19:58??7Huffman編碼與解碼\7\71.ncb
?????文件????????5081??2011-12-21?23:41??7Huffman編碼與解碼\7\71.o
?????文件???????48640??2011-12-22?19:58??7Huffman編碼與解碼\7\71.opt
?????文件?????????238??2011-12-22?19:58??7Huffman編碼與解碼\7\71.plg
............此處省略41個文件信息

評論

共有 條評論

相關資源