设密码电文是由8个字母组成,每个字母在电文中出现的频率分别是7,19,2,6,32,3,21,10写出哈夫曼编码
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/23 16:40:04
设密码电文是由8个字母组成,每个字母在电文中出现的频率分别是7,19,2,6,32,3,21,10写出哈夫曼编码
设密码电文是由8个字母组成,每个字母在电文中出现的频率分别是7,19,2,6,32,3,21,10写出哈夫曼编码
设密码电文是由8个字母组成,每个字母在电文中出现的频率分别是7,19,2,6,32,3,21,10写出哈夫曼编码
O
/ \
/ \
/ \
/ \
(53) (40)
/ \ / \
/ \ / \
(32) (21) (21) (19)
/ \
/ \
(11) (10)
/ \
(6) (5)
/ \
(3) (2)
生成的赫夫曼树,根据左节点为0 右节点为1,从根到叶子的最短路径 如概率32的那个字符可以用00 概率21的那个01 ,概率19的11,概率3 的那个表示成10011.
还有//------------------头文件-------------------------------
#i nclude
#i nclude
#i nclude
#i nclude
#i nclude
#i nclude
#i nclude
typedef int TElemType;
int UINT_MAX=32767;
typedef struct
{
unsigned int weight;
unsigned int parent,lchild,rchild;
}HTNode,* HuffmanTree;
typedef char **HuffmanCode;
//-----------采用全局变量-----------------------
HuffmanTree HT;
HuffmanCode HC;
int *w,i,j,n;
char *z;
int flag=0;
//------------------清空键盘缓冲区---------------
//void Clear_Key_Buffer(void)
//{int offset;
//offset=peek(0x40,0x1a);
//pokeb(0x40,0x1c,offset);
//}
// -----------------求赫夫曼编码-----------------------
int min(HuffmanTree t,int i)
{ // 函数void select()调用
int j,flag;
unsigned int k=UINT_MAX; // 取k为不小于可能的值
for(j=1;j0),构造赫夫曼树HT,并求出n个字符的赫夫曼编码HC
int m,i,s1,s2,start;
unsigned c,f;
HuffmanTree p;
char *cd;
if(n