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

資源簡(jiǎn)介

用c語言實(shí)現(xiàn)的哈夫曼編碼譯碼器,是數(shù)據(jù)結(jié)構(gòu)中的經(jīng)典案例。里面含有設(shè)計(jì)報(bào)告和源代碼。把好的東西貢獻(xiàn)出來,供大家參考一下。

資源截圖

代碼片段和文件信息

#include
#include
#include
#include
typedef?struct?{
int?weight;
int?parent;
int?lchild;
int?rchild;
}?HTNode*HuffmanTree;
typedef?char*?*HuffmanCode;
void?InitCreation(int?nint?*wchar?*a?FILE?*H)
{???
int?iq*s;
char?p;
printf(“??要編碼的所有字母為\n“);
????H=fopen(“hfmTree““r“);

for(i=1;i<=n;i++)
{
????p=fgetc(H);
a[i]=p;

}

a[n+1]=‘\0‘;
putchar(‘??‘);
for(i=1;i {???

putchar(a[i]);
}
printf(“空格\n“);
????
for(i=0s=w;i {???
fscanf(H“%d“&q);
*s=q;
}
printf(“??要編碼的字符的所有權(quán)值為\n“);
????printf(“??“);
for(i=0;i {
printf(“%d?“*(w+i));
}
printf(“\n“);
???fclose(H);
}



int?Select(HuffmanTree?HTint?pint?r)
{
int?ijmin;
for(i=1min=10000;i<=p;i++)
{
if(i!=r)
{
if(HT[i].parent==0&&min>HT[i].weight)
{
min=HT[i].weight;

????????????????j=i;
}
}

}
????
????
return(j);

}

void?HuffmanCoding(HuffmanTree?HTHuffmanCode?HCint?nchar?*aint?*w)
{
HuffmanTree?p;
int?mirsfcstart;
char?*cd;
if(n<=1)?return;
m=2*n-1;
for(p=HT+1i=1;i<=n;++p++i++w)
{
p->weight=*w;
p->parent=0;
p->lchild=0;
p->rchild=0;
}


for(;i<=m;++i++p)
{
p->weight=0;
p->parent=0;
p->lchild=0;
p->rchild=0;

}
???
?????
?for(i=n+1;i<=m;++i)
{
r=Select(HTi-10);
s=Select(HTi-1r);
HT[r].parent=i;
HT[s].parent=i;
HT[i].lchild=r;
HT[i].rchild=s;
HT[i].weight=HT[r].weight+HT[s].weight;
}
?printf(“HT數(shù)組中所有的數(shù)據(jù)為\n“);
?printf(“HT?weight?parent?lchild?rchild\n“);
?for(p=HT+1i=1;i<=m;++p++i)
?{
?printf(“???%d???????%d???????%d???????%d\n“p->weight?p->parent?p->lchildp->rchild?);//輸出數(shù)組中所有的數(shù)據(jù)
?}
????


cd=(char*)malloc(n*sizeof(char));
cd[n-1]=‘\0‘;
????printf(“所有字符的編碼為\n“);
for(i=1;i<=n;i++)
{
start=n-1;
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]);
if(i==n)
{
printf(“空格“);
}
else
{
printf(“%c“a[i]);
}
printf(“%s\n“HC[i]);

}



}
void?HuffmanCreat(HuffmanCode?HCFILE?*TFILE?*Cint?n)
{???
char?ab*p;
int?i;
printf(“??對(duì)ToBeTran文件加密后的內(nèi)容為\n“);
T=fopen(“ToBeTran““r“);
C=fopen(“CodeFile““w“);
a=fgetc(T);
while(a!=EOF)
{
????if(a==‘?‘)
{
i=n;
}
else
{
i=a-96;
}
????p=HC[i];
????b=*p;
????p=p+1;
for(;b!=‘\0‘;p++)
{???
fputc(bC);
b=*p;
}
printf(“%s“HC[i]);
a=fgetc(T);

}
fclose(T);
??? fclose(C);
printf(“\n“);
}
void?HuffmanChange(HuffmanTree?HTchar?*aFILE?*CFILE?*F)
{
?????int?imrt;

?????char?q;
????t=0;
for(i=1;t==0;i++)
{
if(HT[i].parent?==0)
{
t=i;
}
}
printf(“??對(duì)CodeFile解密后的內(nèi)容為\n“);
m=1;
C=fopen(“CodeFile““r“);
F=fopen(“TextFile““w“);

do
{??
if(m!=0

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件????????102??2009-06-30?10:52??哈夫曼編譯碼器\Debug\hfmTree

?????文件?????196715??2009-07-20?17:32??哈夫曼編譯碼器\Debug\sdfsdfas.exe

?????文件?????205320??2009-07-20?17:32??哈夫曼編譯碼器\Debug\sdfsdfas.ilk

?????文件??????15652??2009-07-20?17:32??哈夫曼編譯碼器\Debug\sdfsdfas.obj

?????文件?????197584??2009-07-17?11:19??哈夫曼編譯碼器\Debug\sdfsdfas.pch

?????文件?????484352??2009-07-20?17:32??哈夫曼編譯碼器\Debug\sdfsdfas.pdb

?????文件?????????96??2009-06-30?15:51??哈夫曼編譯碼器\Debug\ToBeTran

?????文件??????33792??2009-07-20?17:32??哈夫曼編譯碼器\Debug\vc60.idb

?????文件??????53248??2009-07-20?17:32??哈夫曼編譯碼器\Debug\vc60.pdb

?????文件????????102??2009-06-30?10:52??哈夫曼編譯碼器\hfmTree

?????文件???????4460??2009-07-17?11:18??哈夫曼編譯碼器\sdfsdfas.c

?????文件?????????96??2009-06-30?15:51??哈夫曼編譯碼器\ToBeTran

?????文件?????266752??2011-05-25?20:00??哈夫曼編譯碼器\哈夫曼編譯碼器.doc

?????目錄??????????0??2011-05-25?18:56??哈夫曼編譯碼器\Debug

?????目錄??????????0??2011-05-25?20:01??哈夫曼編譯碼器

-----------?---------??----------?-----??----

??????????????1458271????????????????????15


評(píng)論

共有 條評(píng)論