资源简介
发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码。
(1)接收原始数据: 从终端读入字符集大小n,n个字符和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
相关资源
- 清华大学严蔚敏数据结构习题集(C版
- C++面向对象程序设计自定义类模板库
- rsa基于openssl1.1 实现签名(rsasign.cpp)
- c语言判断一个数是否为素数
- Linux操作系统下C语言编程入门.pdf
- windows 线程池(ThreadPoolMain.cpp)
- C语言基础思维导图
- 大整数的实现(hugeint.cpp)
- C/C++经典面试题
- c++ 常用排序算法
- 记事本(c++源码)
- c++ 动态建立一个窗口
- 数据结构习题集答案(C语言版严蔚敏
- c语言根据身份证号进行年龄排序
- C语言中的#与##使用
- c++ 贪吃蛇大作战
- c++ 酒店管理入门级(控制台实现)
- C语言面试题.doc(近百道题)
- 高质量c++编程指南.pdf 高清文字版
- c++ 表白爱心代码
- 经典C++笔试题目100例.docx
- c++班级档案管理系统源码(控制台)
- ()c++题库.pdf(180道题 附答案)
- OPCDAAuto.dll文件
- 《DSP集成开发环境CCS开发指南》.pdf
- C++ Primer书籍源码
- c++ 计算是否为素数
- c++给图片增加水印
- c++自定义对话框
- ScDetective驱动
评论
共有 条评论