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

  • 大小: 5KB
    文件類型: .c
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2021-05-22
  • 語(yǔ)言: C/C++
  • 標(biāo)簽: 哈夫曼樹??

資源簡(jiǎn)介

用C語(yǔ)言,哈夫曼樹的應(yīng)用和實(shí)現(xiàn),建立,編碼,譯碼,另外界面也很美觀,可直接運(yùn)行

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?
#include?
#define?n?6
#define?m?2*n-1
typedef?char?datatype;
typedef?struct
{
float?weight;
????datatype?data;
????int?lchildrchildparent;
}hufmtree;
hufmtree?tree[m];
typedef?struct
{
char?bits[n];
int?start;
datatype?data;
}codetype;
codetype?code[n];

void?showMenu();
void?doChoice(char);
void?doQuit();
void?doListAll();
HUFFMAN(hufmtree?tree[m]);
HUFFMANCODE(codetype?code[n]hufmtree?tree[m]);
HUFFMANDECODE(codetype?code[n]hufmtree?tree[m]);

HUFFMAN(hufmtree?tree[])??/*建立哈夫曼樹*/
{
int?ijp1p2k;
????char?ch;?
????float?small1small2f;
for(i=0;i{
tree[i].parent=0;
????tree[i].lchild=0;
????tree[i].rchild=0;?
????tree[i].weight=0.0;
tree[i].data=‘0‘;?
}
for(i=0;i{
k=i+1;
????printf(“請(qǐng)輸入第%d個(gè)結(jié)點(diǎn)的結(jié)點(diǎn)值:“k);
fflush(stdin);
????scanf(“%c“&ch);
????tree[i].data=ch;
printf(“請(qǐng)輸入第%d個(gè)結(jié)點(diǎn)的權(quán)值:“k);
????scanf(“%f“&f);
????tree[i].weight=f;
}
for(?i=n;i{
p1=p2=0;
????small1=small2=FLT_MAX;????/*?FLT_MAX是float類型的最大值*/
????for(j=0;j<=i-1;j++)
??????if(tree[j].parent==0)
??if((fabs(tree[j].weight-small1)>0.00001)&&(tree[j].weight ??{
??small2=small1;?/*改變最小權(quán)、次小權(quán)的對(duì)應(yīng)位置*/
??????????????small1=tree[j].weight;
??????????????p2=p1;
??????????????p1=j;
??}?
??else?if((fabs(tree[j].weight-small2)>0.00001)&&(tree[j].weight ??/*改變次小權(quán)及位置*/
??{
??small2=tree[j].weight;
??????????????p2=j;
??}
??tree[p1].parent=i;?????????/*結(jié)合并的兩個(gè)結(jié)點(diǎn)的雙親域賦值*/
??????????tree[p2].parent=i;
??????????tree[i].lchild=p1;
??????????tree[i].rchild=p2;
??????????tree[i].weight=tree[p1].weight+tree[p2].weight;
}
}

void?doListAll()????/*列出哈夫曼樹的結(jié)果狀態(tài)*/
{
int?i;

printf(“哈夫曼樹的結(jié)果狀態(tài)如下:\n“?);
printf(“======================================================================\n“);
printf(“數(shù)組下標(biāo)?lchild?data?weight?rchild?parent\n“);
for?(i?=?0;?i? {
printf(“%6d%6d?????%c????%.2f%6d%6d\n“itree[i].lchildtree[i].datatree[i].weighttree[i].rchildtree[i].parent);

}
printf(“======================================================================\n“);
}



HUFFMANCODE(codetype?code[]hufmtree?tree[])???/*哈夫曼樹編碼*/
/*code?存放求出的哈夫曼編碼的數(shù)組,tree?已知的哈夫曼樹*/
{
int?icpj;
codetype?cd;???????????????????/*緩沖變量*/
prin

評(píng)論

共有 條評(píng)論