用C++实现Huffman编码和译码(急,谢谢大家了~)

来源:百度知道 编辑:UC知道 时间:2024/05/06 20:00:58
要求设计类(或类模板)来描述Huffman树及其操作,包含必要的构造函数和析构函数,以及其他能够完成如下功能的成员函数:
1求Huffman编码
2输入字符串,求出编码
3输入一段编码,实现译码
并设计主函数测试该类。

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
#include<math.h>

struct htnode {
char ch;
int weight,parent,lchild,rchild;
};
struct hc {
char *code;
char word;
int size;
};

void select(struct htnode * ht,int n,int& s1, int& s2) {
int small1=9999, small2=9999,i;
for(i=1;i<=n-1;i++) {
if(ht[i].weight<small1&&ht[i].parent==0) {
small1=ht[i].weight;
s1=i;
}
++i;
if(ht[i].weight<small2&&ht[i].parent==0) {
small2=ht[i].weight;
s2=i;
}
}
}

void reduce() {
FILE *fpin,*fpout;
int cut[32768];
int i,k;
char flag;
double j=0;
for(i=0;i<=32768;i++)
cut[i]=0;
fpin=fopen("code.txt","r");
fpout=