主题:小妹拜求哈夫曼算法!!!!!!!
花之涯
[专家分:0] 发布于 2005-06-09 13:24:00
各位英雄好汉:
由于马上就要上机检查了,只怪鄙人愚钝,无法定期将作业完成,只好来找各位帮忙了.
具体问题描述如下:
打开一篇英文文章,统计该文章中每一个字符出现的次数,然后以它们作为权值,对每一个字符进行编码,编码完成后再对其编码进行译码.
最好写上详细的注释说明,不然小妹又要发傻了.[em10]
回复列表 (共8个回复)
沙发
花之涯 [专家分:0] 发布于 2005-06-09 21:26:00
各位大虾们
怎么就不给我这一弱女子一点点的安慰呢
我幼小的心灵已经经不起这种折磨了
快来帮帮我吧[em12]
板凳
花之涯 [专家分:0] 发布于 2005-06-09 21:30:00
再没人回消息我就只有撒手人寰了啊
55555555555555555555555555555555555555
3 楼
ier [专家分:0] 发布于 2005-06-11 21:16:00
你是OIer吗?
如果是,一个这样简单的问题,
应该自己解决。
如果实在不行,
再跟我联系。
QQ:285219619
4 楼
ier [专家分:0] 发布于 2005-06-11 21:16:00
也可到我的BLOG上找
5 楼
103 [专家分:0] 发布于 2005-06-13 10:59:00
//***************************************************************
此程序根据用户输入的结点值和权重建立哈夫曼树,然后输出哈夫曼编
****************************************************************/
#include <stdio.h>
#define MAX 21
typedef struct
{
char data; /*结点值*/
int weight; /*权值*/
int parent; /*父结点*/
int left; /*左结点*/
int right;/*右结点*/
}huffnode;
typedef struct
{
char cd[MAX];
int start;
}huffcode;
main()
{
huffnode ht[2*MAX];
huffcode hcd[MAX],d;
int i,k,f,l,r,n,c,m1,m2;
printf("输入元素个数:");
scanf("%d",&n);
for (i=1;i<=n;i++)
{
getchar();
printf("第%d个元素=>\n\t结点值:",i);
scanf("%c",&ht[i].data);
printf("\t权重:");
scanf("%d",&ht[i].weight);
}
for (i=1;i<=2*n-1;i++)
ht[i].parent=ht[i].left=ht[i].right=0;
for(i=n+1;i<=2*n-1;i++)/*构造哈夫曼树*/
{
m1=m2=32767;
l=r=0; /*l和r是最小权重的两个结点位置*/
for(k=1;k<=i-1;k++)
if (ht[k].parent==0)
if(ht[k].weight<m1)
{
m2=m1;
r=l;
m1=ht[k].weight;
l=k;
}
else if (ht[k].weight<m2)
{
m2=ht[k].weight;
r=k;
}
ht[l].parent=i;
ht[r].parent=i;
ht[i].weight=ht[l].weight+ht[r].weight;
ht[i].left=l;
ht[i].right=r;
}
for(i=1;i<=n;i++) /*根据哈夫曼树求哈夫曼编码*/
{
d.start=n+1;
c=i;
f=ht[i].parent;
while(f!=0)
{
if(ht[f].left==c)
d.cd[--d.start]='0';
else
d.cd[--d.start]='1';
c=f;
f=ht[f].parent;
}
hcd[i]=d;
}
printf("输出哈夫曼编码: \n");
for(i=1;i<=n;i++)
{
printf("%c: ",ht[i].data);
for(k=hcd[i].start;k<=n;k++)
printf("%c",hcd[i].cd[k]);
printf("\n");
}
}
6 楼
jak110 [专家分:0] 发布于 2005-12-27 15:10:00
程序能运行
能不能给程序注释一下啊
很多看不懂啊
7 楼
zhaoliu0925 [专家分:0] 发布于 2006-10-27 08:50:00
为了感谢你,让我注册了这个网沾,真麻烦,不过还算好,可以对你说声谢谢了!谢谢你,这个程序直接能运行!!呵呵.....
8 楼
dicky020202 [专家分:0] 发布于 2007-06-30 15:17:00
哎
可惜我现在才看见
不然给你一个不错的代码
下次吧
M M
我来回复