标题:急求huffman编解码程序!!
只看楼主
bananact
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-5-16
 问题点数:0 回复次数:6 
急求huffman编解码程序!!
急求huffman编解码程序!! 那为大侠给提供一个huffman编码和解码程序啊 我明天就要交做业了! 根据字符出现的频率输出二进制编码 根据二进制串输出字符 typedef struct { char data; int weight; int parent; int left; int right; } huffnode; 树是这样定义的! 高手们帮帮忙啊!!!!
搜索更多相关主题的帖子: huffman 解码 
2005-05-16 22:23
傻瓜登子
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-6-29
得分:0 
我业好啊
2005-06-29 11:01
傻瓜登子
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-6-29
得分:0 
我也要啊
2005-06-29 11:02
傻瓜登子
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-6-29
得分:0 
要看看
2005-06-29 11:03
seeker
Rank: 1
等 级:新手上路
帖 子:172
专家分:0
注 册:2005-6-5
得分:0 
楼主是哪个学校的????这个不难做的,关键的算法书上有,其它的输入输出是小事。还是自己多想想吧。

这个我做好了,也是课程设计,在上交以前我无法给跟我一个学校的。
有空我可以给你意见,考试很忙!

我相信总有一片天空属于我!http://myseeker. E-Mail:lwqcny@
2005-06-29 11:35
samwang9430
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2005-6-23
得分:0 

#include<stdio.h> #include<iostream.h> #define n 5 #define m 2*n-1 #define MAX 998 typedef struct { float weight; char c; int lchild,rchild,parent; }hufmtree;//建立哈夫曼树结构

typedef struct { char bits[n]; int start; char ch; }codetype;//建立编码结构 hufmtree tree[m+1];//零下标不用 codetype code[n+1];

//输入字符、编码及构建哈夫曼树函数 void HuffManTree(hufmtree tree[]) { int i,j,p1,p2; char c; float small1,small2,f; for(i=1;i<=m;i++) { tree[i].parent=0; tree[i].lchild=0; tree[i].rchild=0; tree[i].weight=0.0; tree[i].c='\0'; } printf("请输入要编码的字符:"); for(i=1;i<=n;i++) { c=getchar(); tree[i].c=c; } cout<<"请输入相应字符的权值:"; for(i=1;i<=n;i++) { cin>>f; tree[i].weight=f; } for(i=n+1;i<=m;i++) { p1=0; p2=0; small1=MAX; small2=MAX; for(j=1;j<=i-1;j++) if(tree[j].parent==0) if(tree[j].weight<small1) { small2=small1; small1=tree[j].weight; p2=p1; p1=j; } else if(tree[j].weight<small2) { 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; } } //为字符编码函数 void HuffManCode(hufmtree tree[],codetype code[]) { int i,j,c,p; codetype cd; for(i=1;i<=n;i++) { cd.start=n; c=i; cd.ch=tree[i].c; p=tree[i].parent; for(j=0;j<n;j++) cd.bits[j]=' '; 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; } } //编码输出函数 void PutoutCode(codetype code[]) { int i,j; for(i=1;i<=n;i++) { cout<<code[i].ch<<" "; for(j=0;j<n;j++) cout<<code[i].bits[j]; cout<<endl; } } void main() { HuffManTree(tree); HuffManCode(tree,code); cout<<"字符编码结果为:"<<endl; PutoutCode(code); }

2005-07-04 17:07
samwang9430
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2005-6-23
得分:0 
不知对你有没有帮助
2005-07-04 17:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-18422-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.137240 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved