#include <stdio.h>
#include <malloc.h>
#include <string.h>
typedef struct {
char info;
int weight;
int parent, lchild, rchild;
} HTNode, *HuffmanTree;
typedef char* *HuffmanCode;
HuffmanTree HT;
HuffmanCode HC;
int n = 8;
/*
在 HT[1...t] 中选择 parent 不为 0 且权值最小的两个结点,
其序号分别为 s1 和 s2
*/
void Select(HuffmanTree HT, int t, int *s1, int *s2) {
int i, temp1, temp2;
temp1 = temp2 = 1000;
for (i = 1; i <= t; i++) {
if (HT[i].parent == 0 && (HT[i].weight < temp1 || HT[i].weight < temp2)) {
if (temp1 < temp2) {
temp2 = HT[i].weight;
*s1 = i;
} else {
temp1 = HT[i].weight;
*s2 = i;
}
}
}
/* s1 放较小的序号 */
if (*s1 > *s2) {
i = *s1;
*s1 = *s2;
*s2 = i;
}
}
HuffmanTree HuffmanCoding(int *w, int n, char *info) {
// n 为字符串个数
HuffmanTree HT, p;
char *cd;
int m, s1, s2, i, start, f, c;
if (n <= 1) {
return 0;
}
m = 2 * n - 1;
HT = (HuffmanTree)mal
【数据结构】哈夫曼树的编码与译码
最新推荐文章于 2024-02-23 00:03:48 发布
本文详细介绍了哈夫曼编码的实现过程,包括构建哈夫曼树、编码与译码算法。通过具体示例,展示了如何使用C语言进行哈夫曼编码的编程。


502

被折叠的 条评论
为什么被折叠?



