哈夫曼编码译码器数据结构C语言

您所在的位置:网站首页 创建哈夫曼树的select语句 哈夫曼编码译码器数据结构C语言

哈夫曼编码译码器数据结构C语言

2023-05-13 13:49| 来源: 网络整理| 查看: 265

 

需求分析

 

目前

,

进行快速远距离通信的主要手段是电报,即将需传送的文字转化成由二级制的字符组成的

字符串

.

例如

,

假设需传送的电文为“

ABACCDA"

,它只有

4

种字符,只需两个字符的串,便可以分

辨。

假设

A

B

C

D

的编码分别为

00

01,10

11

则上述

7

个字符的电文便为

00010010101100

总长

14

位,对方接受时,可按二位一分进行译码。

 

当然

,

在传送电文时

,

希望总长尽可能地短

.

如果对每个字符设计长度不等的编码,且让电文中出

现次数较多的字符采用尽可能短的编码,则传送电文的总长便可减少。如果设计

A

B

C

D

的编

码分别为

0,00,1

01

,则上述

7

个字符的电文可转换成总长为

9

的字符串“

000011010"

。但是,这样

的电文无法翻译,例如传送过去的字符串中前

4

个字符的字串“

0000

”就可以有很多种译法

,

或是

AAAA

”或者“

BB

,

或者“

ABA

”等

.

因此,若要设计长短不等的编码,则必须是任一字符的编

码都不是另一个字符的编码的前缀,这种编码称作前缀编码。

 

然而,如何进行前缀编码就是利用哈夫曼树来做,也就有了现在的哈夫曼编码和译码

二、概要设计

 

利用哈夫曼树编

/

译码

 

(一)

、建立哈夫曼树

 

(二)

、对哈夫曼树进行编码

 

(三

)

、输出对应字符的编码

 

(四)

、译码过程

 

 

主要代码实现:

 

struct code 

 

 

//

结构体的定义

 

 

char a

 

 

int w

 

 

int parent; 

 

int lchild; 

 

int rchild; 

}

 

void creation(code *p,int n

int m

//

建立哈夫曼树

 

void coding

code 

p,int n

 

 

 

//

编码

 

void display

code *p

int n

int m)

 

 

//

输出函数

 

void translate

char *

hc,code *p,int n); 

 

//

译码

 

三、

详细设计

 

(一)、建立哈夫曼树

 

 

 

 

 

 

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3