24小时热门版块排行榜    

查看: 412  |  回复: 2

-谁主沉浮

新虫 (小有名气)

[求助] 哈夫曼树纠错!急 哪里运行出问题。。。

哈夫曼树纠错!急 哪里运行出问题。。。
CODE:
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#define MAX 100
typedef struct
{
int weight;
int parent,lchild,rchild;
}HTNode,*HuffmanTree;
typedef char **HuffmanCode;
void Select(HuffmanTree HT,int n,int &s1,int &s2)
{
    int small1,small2;
    s1=s2=0;small1=small2=MAX;
for(int i=1;i<=n;++i)
{
  if(HT[i].parent==0)
  {
   if(HT[i].weight<small1)
   {
    small2=small1;
    small1=HT[i].weight;
    s2=s1; s1=i;
   }
   else
    if(HT[i].weight<small2)
    {
     small2=HT[i].weight;
     s2=i;
    }
  }
}
}
void HuffmanCoding(HuffmanTree &HT,HuffmanCode &HC,int*w,int n)
{
int m,s1,s2,i,c,start,f;
char *cd;
HuffmanTree p;
if(n<=1)
  return;
m=2*n-1;
HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode));
for(p=HT+1,i=1;i<=n;++i,++p,++w)
{
  p->weight=*w;
  p->lchild=0;
  p->parent=0;
  p->rchild=0;
}
for(;i<=m;++i,++p)
{
  p->weight=0;
  p->lchild=0;
  p->parent=0;
  p->rchild=0;
}
for(i=n+1;i<=m;++i)
{
  Select(HT,i-1,s1,s2);
  printf("%d  %d\n",s1,s2);
  HT[s1].parent=i;
  HT[s2].parent=i;
  HT[i].lchild=s1;
  HT[i].rchild=s2;
  HT[i].weight=HT[s1].weight+HT[s2].weight;
}
HC=(HuffmanCode)malloc((n+1)*sizeof(char*));
cd=(char*)malloc(n*sizeof(char));
cd[n-1]='\0';
for(i=1;i<=n;++i)
{
  start=n-1;
  for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent)
  {
   if(HT[f].lchild==c)
    cd[--start]='0';
   else
    cd[--start]='1';
   HC[i]=(char*)malloc((n-start)*sizeof(char));
   strcpy(HC[i],&cd[start]);
  }
  free(cd);
}
}
void PrintCode(HuffmanCode HC,int n,char *ch)
{
for(int i=1;i<=n;i++)
{
  printf("字符%c的霍夫曼编码:",ch[i-1]);
  printf("%s\n",HC[i]);
}
}
void main()
{
HuffmanTree HT;
HuffmanCode HC;
int w[MAX],i,n;
char ch[MAX];
printf("请输入字符个数:\n");
scanf("%d",&n);
printf("请输入字符:\n");
for(i=0;i<n;i++)
  scanf("%c",&ch[i]);
printf("请输入字符对应权值:\n");
for(i=0;i<n;i++)
  scanf("%d",&w[i]);
HuffmanCoding(HT,HC,w,n);
PrintCode(HC,n,ch);
}

[ Last edited by jjdg on 2013-5-11 at 01:18 ]
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shyboylpf

新虫 (初入文坛)

jjdg: 编辑内容 2013-05-11 01:19
内容已删除
2楼2013-05-09 20:18:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

-谁主沉浮

新虫 (小有名气)

引用回帖:
2楼: Originally posted by shyboylpf at 2013-05-09 20:18:44
为毛还能加表情。。。

不是的啊,明明是括号,系统自动换成表情
3楼2013-05-10 12:15:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 -谁主沉浮 的主题更新
信息提示
请填处理意见