huffman编码译码的c语言实现

来源:百度知道 编辑:UC知道 时间:2024/06/22 20:26:13
在双工通讯中利用哈夫曼编码和译码。功能:
初始化:从键盘读入字符集大小n,以及n个字符和相应的权值,建立哈夫曼树,并存入文件A中。
编码:利用已经建好的哈夫曼树,对文件B中的正文进行编码,然后将结果存入文件C中。
译码:利用已经建好的哈夫曼树将文件C中的代码进行译码,结果存入文件D中。

留个脚印,晚上回去看看

#include <iostream.h>
#include <iomanip.h>
#include <string.h>
#include <malloc.h>
#include <stdio.h>

//typedef int TElemType;
const int UINT_MAX=1000;
char str[50];

typedef struct
{
int weight,K;
int parent,lchild,rchild;
}HTNode,* HuffmanTree;

typedef char **HuffmanCode;

//-----------全局变量-----------------------
HuffmanTree HT;
HuffmanCode HC;
int w[50],i,j,n;
char z[50];
int flag=0;
int numb=0;

// -----------------求赫夫曼编码-----------------------
struct cou{
char data;
int count;
}cou[50];

int min(HuffmanTree t,int i)
{ // 函数void select()调用
int j,flag;
int k=UINT_MAX; // 取k为不小于可能的值,即k为最大的权值1000
for(j=1;j<=i;j++)
if(t[j].weight<k&&t[j].parent==0)
k=t[j].weight,flag=j;
t[flag].parent=1;
retur