• 大小: 8.23KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-02-01
  • 标签: c  数据结构  哈夫曼树  

资源简介


发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码。

1)接收原始数据: 从终端读入字符集大小nn个字符和n个权值,建立哈夫曼树,存于文件hfmtree.dat中。

2)编码: 利用已建好的哈夫曼树(如不在内存,则从文件hfmtree.dat中读入)对文件中的正文进行编码,然后将结果存入文件codefile.dat中。

3)译码: 利用已建好的哈夫曼树将文件codefile.dat中的代码进行译码,结果存入文件textfile.dat 中。

4)打印编码规则即字符与编码的一一对应关系。

5)打印哈夫曼树将已在内存中的哈夫曼树以直观的方式显示在终端上。



资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 

#define NULL 0
//#define OK 1
//#define ERROR 0
//#define OVERFLOW -2
#define MAX_NUM 10000
#define MAX 60
int j=0;

typedef int Status;
typedef char **HuffmanCode;

typedef struct{
     unsigned int    weight;//字符对应的权值 
     unsigned int    parentlchildrchild;
}HTNode*HuffmanTree;//此处定义了哈夫曼树节点的数据类型。提供给Huffman使用

typedef struct{
     HuffmanTree HT;
     char         *c;//存放将要建立哈夫曼树的字符
     int          longth;//字符的大小,即开始第一步输入的一个整数
     HuffmanCode HC;//存放对应的哈夫编码即对应的01代码
}Huffman;

void Select(HuffmanTree HTint endint *s1int *s2)
//把输入的字符按权值从小到大排序,挑出最小权值供HuffmanCoding()调用
//并且根节点的权值等于他的左右孩子的权值和
//min2是在剩下的字符中挑出的最小的劝值的字符

{
   int i;
   int min1=MAX_NUM;//min1是根节点的权值
   i

评论

共有 条评论