当前位置:   article > 正文

哈夫曼译码器java_哈夫曼编码译码器及代码

用java写一个具有初始化、编码、译码、打印代码文件,打印哈夫曼树等功能的哈夫曼

编译环境:VC++ 6.0编程要求简述:

[问题描述]

利用哈夫曼编码进行信息通讯可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码;在接收端将传来的数据进行译码(复原)。对于双工信道

(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼码的编译码系统。

[基本要求]

一个完整的系统应具有以下功能:

(l)I:初始化

(Initialization)。从终端读入字符集大小n,及n个字符和m个权值,建立哈夫曼树,并将它存于文件hfmtree中。

(2)C:编码

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

(3)D:编码

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

(4)P:印代码文件

(Print)。将文件codefile以紧凑格式显示在终端上,每行50个代码。同时将此字符形式的编码文件写入文件codeprint中。

(5)T:印哈夫曼树 (Tree

printing)。将已在内存中的哈夫曼树以直观的方式

(树或凹入表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件treeprint中。

程序源代码:

文件一:my.h(自定义头文件)

//调用有文件以及定义常数值

#include "stdio.h"

#include "string.h"

#define MAXLEN 100

#define MAXLEN_1 1000

//自定义类型声明

typedef struct

{

int weight;

char data;

int lchild,rchild,parent;

}HFMTnode;

typedef HFMTnode HFMT[MAXLEN];

typedef

struct

{

char code[MAXLEN];

char data;

}HFMCnode;

typedef HFMCnode HFMC[MAXLEN];

typedef

struct

{

char data[MAXLEN];

int top;

}seqstack;

//文件全局变量外部声明

extern int n;

//所有子函数声明

void InitializeTree(HFMT T);

void InputTree(HFMT T);

void Selectleast(HFMT T,int *p1,int *p2);

void CreateHFMT(HFMT T);

void push(char x);

void hfmc(HFMT T,int i);

void CreateHFMC(HFMT T,HFMC C);

void Initialization(HFMT T,HFMC C);

void Codeing(HFMC C);

void Decodeing(HFMC C);

void Showcodefile();

void Showhfmt(HFMT T);

int TreeDepth(HFMT T,int i);

void print(HFMT T,int i,int a);

文件二:Initialization.c(初始化)

#include

"my.h"

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/859212
推荐阅读
相关标签
  

闽ICP备14008679号