最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

C语言实现哈夫曼编码与译码

来源:动视网 责编:小OO 时间:2025-09-28 00:32:47
文档

C语言实现哈夫曼编码与译码

信息工程1102苑博2011116020230C语言实现哈夫曼编码与译码#include;#definen5;#definem(2*n-1);#definemaxval10000.0;#definemaxsize100;typedefstruct;{charch;floatweight;intlchild,rchild,parent;}hufmtree;typedefstruct;{charbits[n];intstart;charch;}codetype;voidhuffman(hufmtr
推荐度:
导读信息工程1102苑博2011116020230C语言实现哈夫曼编码与译码#include;#definen5;#definem(2*n-1);#definemaxval10000.0;#definemaxsize100;typedefstruct;{charch;floatweight;intlchild,rchild,parent;}hufmtree;typedefstruct;{charbits[n];intstart;charch;}codetype;voidhuffman(hufmtr
信息工程1102 苑博2011116020230

C语言实现哈夫曼编码与译码

#include;

#define n 5 ;

#define m (2*n-1) ;

#define maxval 10000.0;

#define maxsize 100 ;

typedef struct;

{

char ch;

float weight;

int lchild,rchild,parent;

}hufmtree;

typedef struct;

{

char bits[n];

int start;

char ch;

}codetype;

void huffman(hufmtree tree[]);

void huffmancode(codetype code[],hufmtree tree[]);

void decode(hufmtree tree[]);

void main()

{

printf(" ——哈夫曼编码——\\n"); printf("总共有%d个字符\\n

hufmtree tree[m];

codetype code[n];

int i,j;

huffman(tree);

huffmancode(code,tree);

printf("【输出每个字符的哈夫曼编码】\\n");

for(i=0;i{

printf("%c:

for(j=code[i].start;jprintf("%c

printf("\\n");

}

printf("【读入电文,并进行译码】\\n");

decode(tree);

}

void huffman(hufmtree tree[])int i,j,p1,p2;

float small1,small2,f;

char c;

for(i=0;i{

tree[i].parent=0;

tree[i].lchild=-1;

tree[i].rchild=-1;

tree[i].weight=0.0;

}

printf("【依次读入前%d个结点的字符及权值(中间用空格隔开)】\\n

{

printf("输入第%d个字符为和权值

scanf("%c %f

getchar();

tree[i].ch=c;

tree[i].weight=f;

}

for(i=n;i{

p1=0;p2=0;

small1=maxval;small2=maxval; /

for(j=0;jif(tree[j].parent==0)

if(tree[j].weight{

small2=small1;

small1=tree[j].weight;

p2=p1;

p1=j;

}

else

if(tree[j].weight{

small2=tree[j].weight; /

p2=j;

}

tree[p1].parent=i;

tree[p2].parent=i;

tree[i].lchild=p1;

tree[i].rchild=p2;

tree[i].weight=tree[p1].weight+tree[p2].weight;}//huffman

void huffmancode(codetype code[],hufmtree tree[]) {

int i,c,p;

codetype cd;

for(i=0;i{

cd.start=n;

cd.ch=tree[i].ch;

c=i;

p=tree[i].parent;

while(p!=0)

{

cd.start--;

if(tree[p].lchild==c)

cd.bits[cd.start]='0';

else

cd.bits[cd.start]='1';

c=p;

p=tree[p].parent;

}

code[i]=cd;

}

}//huffmancode

void decode(hufmtree tree[])

{

int i,j=0;

char b[maxsize];

char endflag='2';

i=m-1;

printf("输入发送的编码(以'2'为结束标志):"); gets(b);

printf("译码后的字符为");

while(b[j]!='2')

{

if(b[j]=='0')

i=tree[i].lchild;

else

i=tree[i].rchild;

if(tree[i].lchild==-1)

{

printf("%c

i=m-1;j++;

}

printf("\\n");

if(tree[i].lchild!=-1&&b[j]!='2') printf("\\nERROR\\n");

}//decode

文档

C语言实现哈夫曼编码与译码

信息工程1102苑博2011116020230C语言实现哈夫曼编码与译码#include;#definen5;#definem(2*n-1);#definemaxval10000.0;#definemaxsize100;typedefstruct;{charch;floatweight;intlchild,rchild,parent;}hufmtree;typedefstruct;{charbits[n];intstart;charch;}codetype;voidhuffman(hufmtr
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top