下载此文档

数据结构哈夫曼编码.doc


文档分类:IT计算机 | 页数:约4页 举报非法文档有奖
1/4
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/4 下载此文档
文档列表 文档介绍

#include <>
#include <>
#include <>
#include ""
#define MaxBit 100
(j=myHaffCode[m].start;j<n;j++)
printf("%d",myHaffCode[m].bit[j]);
printf("\n");
}
}

#ifndef Haffman_H_INCLUDED
#define Haffman_H_INCLUDED
#define MaxN 300
#define MaxValue 10000
typedef struct
{
int weight; //权值
int flag; //标记
int parent; //双亲结点下标
int leftChild; //左孩子下标
int rightChild; //右孩子下标
}HaffNode; //哈夫曼树的结点结构
typedef struct
{
int bit[MaxN]; //数组
int start; //编码的起始下标
int weight; //字符的权值
}Code; //哈弗曼编码的结构
void Haffman(int weight[],int n,HaffNode haffTree[])
//建立叶节点个数为n,权值数组为weight的哈弗曼树haffTree
{
int i,j,m1,m2,x1,x2;
//哈夫曼树haffTree初始化,n个叶节点的二叉树共有2n-1个结点
for(i=0;i<2*n-1;i++)
{
if(i<n) haffTree[i].weight=weight[i];
else haffTree[i].weight=0;
haffTree[i].parent=-1;
haffTree[i].flag=0;
haffTree[i].leftChild=-1;
haffTree[i].rightChild=-1;
}
//构造哈弗曼树的n-1个非叶节点
for(i=0;i<n-1;i++)
{
m1=m2=MaxValue;
x1=x2=0;
for(j=0;j<n+i;j++) //找出权值最小和次小的子树
{
if((haffTree[j].weight<m1) && (haff

数据结构哈夫曼编码 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数4
  • 收藏数0 收藏
  • 顶次数0
  • 上传人miaoshen1985
  • 文件大小20 KB
  • 时间2022-02-22