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

  • 大小: 4KB
    文件類型: .c
    金幣: 1
    下載: 2 次
    發布日期: 2021-06-17
  • 語言: C/C++
  • 標簽: Huffman??

資源簡介

哈夫曼編碼的c語言實現,代碼中有注釋。有編碼和譯碼功能,能輸出每個字符的Huffman碼。可以輸入一段Huffman碼反應成文本,也可以輸入一段文本翻譯成Huffman碼。計算了信源熵,編碼效率,和平均編碼長度。

資源截圖

代碼片段和文件信息

#include
#include
#include
#define?MaxLength?30
#define?MaxSpace?100
#define?MaxBit?10
#define?MaxWeight?10000
#define?MaxLeaf?30
#define?MaxNode?MaxLeaf*2-1
typedef?struct?{
float?weight;
int?parent;
int?lchild;
int?rchild;
char?value;
}HNodeType;
typedef?struct?{
int?bit[MaxBit];
int?start;
}HCodeType;
/*生成哈夫曼樹*/
void?HuffmanTree(HNodeType?HuffmanTree[]int?num)?{
int?i?j?x1?x2?n;
float?m1m2;
n=num;
/*初始化*/
for?(i?=?0;?i? HuffmanTree[i].weight?=?0;
HuffmanTree[i].parent?=?-1;
HuffmanTree[i].lchild?=?-1;
HuffmanTree[i].rchild?=?-1;
HuffmanTree[i].value=‘?‘;
}
for?(i?=?0;?i? printf(“輸入字符和出現概率:“);
scanf(“%c%f“?&HuffmanTree[i].value&HuffmanTree[i].weight);
getchar();

}
/*連接節點*/
for?(i?=?0;?i? m1?=?m2?=?MaxWeight;
x1?=?x2=0;
for?(j?=?0;?j? if?(HuffmanTree[j].weight? m2?=?m1;
x2?=?x1;
m1?=?HuffmanTree[j].weight;
x1?=?j;
}
else?if?(HuffmanTree[j].weight? m2?=?HuffmanTree[j].weight;
x2?=?j;
}
}
HuffmanTree[x1].parent?=?n?+?i;
HuffmanTree[x2].parent?=?n?+?i;
HuffmanTree[n?+?i].lchild?=?x1;
HuffmanTree[n?+?i].rchild?=?x2;
HuffmanTree[n?+?i].weight?=?HuffmanTree[x1].weight?+?HuffmanTree[x2].weight;
}
}
/*生成哈夫曼編碼*/
void?HaffmanCode(HNodeType?Hutree[]HCodeType?HuffCode[]int?n)?{
HCodeType?cd;
int?i?j?c?plength;
float?sumsum1sum2=0;
sum1=0;
HuffmanTree(Hutreen);
for?(i?=?0;?i? cd.start?=?n?-?1;
c?=?i;
p?=?Hutree[c].parent;
while?(p?!=?-1)?{
if?(Hutree[p].lchild?==?c)?cd.bit[cd.start]?=?0;
else?cd.bit[cd.start]?=?1;
cd.start--;
c?=?p;
p?=?Hutree[c].parent;
}
for?(j?=?cd.start?+?1;?j? HuffCode[i].start?=?cd.start;
}
for(i=0;i printf(“\n字符%c的哈弗曼編碼為:“Hutree[i].value);
length=0;
for(j=Hu

評論

共有 條評論