迷你博客

共0篇迷你博客

最新帖子

共5 条帖子

林野草(ltc_mouse)在线状态 3月前

社区头衔:
社区专家 (专家排行榜
社区生日:
2005-03-05 |生日:1982-03-06
所在城市:
中国 广东 深圳
技术专长:
C/C++
开发工具:
兴趣爱好:
个人简介:
努力工作学习中~
所在行业:
所在公司:
 
(仅好友可见)
联系方式:
(仅好友可见)
 
编辑我的资料
人气:
[人气排行榜] 共 566 人访问 / 查看详细
专家分:
[专家分排行榜] 共 8348 分 / 查看详细
可用分:
[可用分排行榜] 共 1662 分
所获勋章:

2

个人动态
林野草 现在没有任何动态。
博客
查看全部

共1 篇文章

留言
查看全部

共 1 条留言

gengyigang 2008-05-27

麻烦你帮我看一下这个拿C编的哈夫曼数编码的程序,在VC++上有错误,麻烦了<br />#include"stdio.h"<br />#include"stdlib.h"<br />#include"string.h"<br />typedef struct<br />{<br /> char data;<br /> int weight;<br /> int parent,lchild,rchild;<br />}HTNode,* HTree;<br />typedef char** HTCode;<br />Select(HTree HT,int k,int* s1,int* s2)<br />{<br /> int m1=32767,m2=32767;<br /> int i;<br /> *s1=*s2=0;<br /> for(i=1;i&lt;=k;i++)<br /> {<br /> if((HT[i].weight&lt;=m1)&amp;&amp;(HT[i].parent==0))<br /> {<br /> m2=m1;<br /> *s2=*s1;<br /> m1=HT[i].weight;<br /> *s1=i;<br /> }<br /> else<br /> if((HT[i].weight)&lt;=(m2&amp;&amp;HT[i].parent==0))<br /> {<br /> m2=HT[i].weight;<br /> *s2=i;<br /> }<br /> }<br />}<br />HTree InitHT(HTree *HT,int i)<br />{<br /> int n,m,j,s1,s2;<br /> char c;<br /> if(i&lt;=1)<br /> return 0;<br /> n=2*i-1;<br /> *HT=(HTree)malloc((n+1)*sizeof(HTNode));<br /> if(!*HT)<br />    {<br /> printf("wrong");<br /> exit(0);<br /> }<br /> for(j=1;j&lt;=i;j++)<br /> {<br /> printf("请输入字符:\n");<br /> getchar();<br /> c=getchar();<br /> (*HT)[j].data=c;<br /> printf("请输入该字符的权值:\n");<br /> scanf("%d",&amp;m);<br /> (*HT)[j].weight=m;<br /> (*HT)[j].parent=0;<br /> (*HT)[j].lchild=0;<br /> (*HT)[j].rchild=0;<br /> }<br /> for(j=i+1;j&lt;=n;j++)<br /> {<br /> (*HT)[j].data=0;<br /> (*HT)[j].weight=0;<br /> (*HT)[j].parent=0;<br /> (*HT)[j].lchild=0;<br /> (*HT)[j].rchild=0;<br /> }<br /> for(j=i+1;j&lt;=n;j++)<br /> {<br /> Select(*HT,j-1,&amp;s1,&amp;s2);<br />     (*HT)[s1].parent=j;(*HT)[s2].parent=j;<br />     (*HT)[s1].lchild=s1;(*HT)[s2].rchild=s2;<br />     (*HT)[j].weight=(*HT)[s1].weight+(*HT[s2]).weight;<br /> }<br /> return *HT;<br />}<br />CodeHT(HTree HT,HTCode* HC,int n)<br />{<br /> char* cd;<br /> int i,start,c,f;<br /> *HC=(HTCode)malloc((n+1)*sizeof(char*));<br /> cd=(char* )malloc(n*sizeof(char));<br /> cd[n-1]='\0';<br /> for(i=1;i&lt;=n;i++)<br /> {<br /> start=n-1;<br /> for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent)<br /> {<br /> if(HT[f].lchild==c)<br /> cd[--start]='0';<br /> else<br /> cd[--start]='1';<br /> (*HC)[i]=(char*)malloc((n-start)*sizeof(char));<br /> strcpy((*HC)[i],&amp;cd[start]);<br /> }<br /> free(cd);<br /> }<br />}<br />main()<br />{<br /> HTree HT=NULL;<br /> int i,j;<br /> HTCode HC;<br /> printf("输入编码的个数:\n");<br /> scanf("%d",&amp;i);<br /> HT=InitHT(&amp;HT,i);<br />    CodeHT(HT,&amp;HC,i);<br /> for(j=1;j&lt;=i;j++)<br /> {<br /> printf("\n%c的编码是%s\n",HT[j],HC[j]);<br /> }<br />}<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />