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

  • 大小: 6KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-12
  • 語言: C/C++
  • 標簽:

資源簡介

基于哈夫曼編碼的文本文件壓縮與解壓縮,使用c語言,實際只是編碼解碼,不應該稱為解壓縮,因為編碼后文件會更大

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?
#include?
#include?
using?namespace?std;
typedef?struct
{
int??weight;
int?parentlchildrchild;
}HTNode*HuffmanTree;
typedef?struct
{
char*?data;
int*?num;
int?length;
}TNode;
typedef?struct
{
char?*data;
char**?HM;
}Code;
typedef?char**?HuffmanCode;
bool?IfEncode()
{
int?choose;
cout<<“\t????????????1.加密壓縮?????2.無密壓縮“< cout<<“請輸入選擇:“;?
cin>>choose;
if(choose==1)
return?true;
else
return?false;
}
void?Encode(vector&?v)
{
char?ch[30];
v.push_back(‘@‘);
cout<<“請輸入壓縮密碼“< cin>>ch;
for(int?i=0;ch[i]!=‘\0‘;i++)
v.push_back(ch[i]);
v.push_back(‘\0‘);
v.push_back(‘@‘);
cout<<“開始壓縮!“<}
void?ReadTxt(vector&?v)
{
char?ch;
ifstream?infile(“test.txt“ios::in);
if(!infile)
{
cerr<<“open?error“< exit(1);
}
if(IfEncode())
Encode(v);
while(infile.peek()!=EOF)
{
infile.get(ch);
v.push_back(ch);?
}
infile.close();
}
void?InitList(TNode&?T)
{
T.data=new?char[256];
T.num=new?int[256];
if(!T.data||!T.num)
exit(1);
T.length=0;
}
bool?Find(TNode?Tchar?ch)
{
int?i;
for(i=0;i if(ch==T.data[i])
return?true;
return?false;
}
void?TCount(vector?v1TNode?&T)
{
int?ij=0;
char?ch;
int?m=v1.size();
for(i=0;i {
ch=v1[i];
if(!Find(Tch))
{
T.data[j]=ch;
T.num[j]=count(v1.begin()v1.end()ch);
j++;
T.length++;
}
}
}
void?Select(HuffmanTree?&HTint?mint&?s1int&?s2)
{
int?kjnmin=32767;
for(k=1;k<=m;k++)
{
if(HT[k].parent==0)
if(HT[k].weight<=min)
{
j=k;
min=HT[k].weight;
}
}
s1=j;
HT[j].parent=1;
min=32767;
for(k=1;k<=m;k++)
{
if(HT[k].parent==0)
if(HT[k].weight<=min)
{
n=k;
min=HT[k].weight;
}
}
s2=n;
}
void?CreateHuffmanTree?(HuffmanTree?&HTTNode?Tint?length)
{
int?mis1s2;
if(length<=1)
return;
m=2*length-1;
HT=new?HTNode[m+1];
for(i=1;i<=m;++i)
{
HT[i].parent=0;
HT[i].lchild=0;
HT[i].rchild=0;
}
for(i=1;i<=length;++i)
HT[i].weight=T.num[i-1];
for(i=length+1;i<=m;i++)
{
Select(HTi-1s1s2);
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;
}
}
void?CreatHuffmanCode?(HuffmanTree?HTHuffmanCode?&HCint?n)
{
int?ifcstart;
HC=new?char*[n+1];
char*?cd=new?char[n];
cd[n-1]=‘\0‘;
for(i=1;i<=n;i++)
{
start=n-1;
c=i;
f=HT[i].parent;
while(f!=0)
{
--start;
if(HT[f].lchild==c)
cd[start]=‘0‘;
else
cd[start]=‘1‘;
c=f;
f=HT[f].parent;
}
HC[i]=new?char[n-start];
strcpy(HC[i]&cd[start]);
}
delete?cd;
}

void?Zip(HuffmanCode?HCvector?vTNode?T)
{
int?i=0j=0k=0;
ofstream?outfile(“zip.txt“ios::out);
if(!outfile)
{
cerr<<“open?error“<

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????????928??2016-07-07?23:38??code.dat
?????文件???????10279??2017-10-30?11:56??HuffMan.cpp
?????文件?????????634??2016-07-07?23:38??rzip.txt
?????文件????????1662??2016-07-07?23:39??test.txt
?????文件????????3714??2016-07-07?23:38??zip.txt

評論

共有 條評論