下载此文档

C 实现哈夫曼编码完整代码.doc


文档分类:IT计算机 | 页数:约8页 举报非法文档有奖
1/8
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/8 下载此文档
文档列表 文档介绍
精品文档,仅供学****与交流,如有侵权请联系网站删除
【精品文档】第 1 页
#include<iostream>
#include<string>
using namespace std;
#include<>
typedef struct{//霍夫曼树的结构体
char ch;
double weight; //权值,此处为概率
int parent,lchild,rchild;}
htnode,*hfmtree;
typedef char **hfmcode;
/*****************************全局变量*****************************/
hfmtree HT;
hfmcode HC;
int n=0;//霍夫曼树叶节点个数
int m=0;//霍夫曼树所有节点个数
int *code_length;
//用于记录每个消息字符的码长
/*****************************霍夫曼编码模块*****************************/
//对输入的字符进行检验
int Input_Char_Check()
{ int flag=1; int j;
for(int i=1;i<n&&flag;i++)
for(j=i+1;j<=n;j++)
if(HT[j].ch==HT[i].ch)
flag=0;
break;
return flag;}
//对输入的概率进行检测
int Input_Weight_Check(){
int flag=0; double sum=;
for(int i=1;i<=n;i++) {
if(!(HT[i].weight>0&&HT[i].weight<1))//概率越界
{ flag=1; return flag; }
else{ sum+=HT[i].weight;
continue; }
if(sum>1)//概率之和超过1
flag=2;
return flag;
void Select(int a,int *p1,int *p2) /*Select函数,选出HT树到a为止,权值最小和次小且parent为0的2个节点*/
int i,j,x,y;
for(j=1;j<=a;++j)
if(HT[j].parent==0)
x=j; break;
精品文档,仅供学****与交流,如有侵权请联系网站删除
【精品文档】第 2 页
for(i=j+1;i<=a;++i)
if(HT[i].weight<HT[x].weight&&HT[i].parent==0)
x=i; //选出权值最小的节点
for(j=1;j<=a;++j)
if(HT[j].parent==0&&x!=j)
y=j; break;
for(i=j+1;i<=a;++i)
if(HT[i].weight<HT[y].weight&&HT[i].parent==0

C 实现哈夫曼编码完整代码 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数8
  • 收藏数0 收藏
  • 顶次数0
  • 上传人ocxuty74
  • 文件大小32 KB
  • 时间2021-11-22