while(p1)
{
if(HT[p1].weight==0) //向左
{
HT[p1].weight=1;
if(HT[p1].lchild!=0)
{
p1=HT[p1].lchild;
printf("p1为%d \n",p1);
cd[cdlen]='0';
cdlen++;
}
else if(HT[p1].lchild==0&&HT[p1].rchild==0) //登记叶子结点的字符编码
{
HC[p1]=(char *)malloc(cdlen*sizeof(char));
cd[cdlen]='\0';
strcpy(HC[p1],cd); //复制编码串
printf("HC的值%s\n",HC[p1]);
}
}
else if(HT[p1].weight==1) //向右
{
HT[p1].weight=2;
if(HT[p1].rchild!=0)
{
p1=HT[p1].rchild;
cd[cdlen]='1';
cdlen++;
}
}
else //HT[p1].weight==2,退回
{
HT[p1].weight=0;
p1=HT[p1].parent;
--cdlen; //退到父节点,编码长度减1
}
}
哈弗曼编码,从根到叶子,权值从数组为0开始,会出问题,以下代码,知道问题出现在下标为0的权值无法编码
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
0条回答 默认 最新
悬赏问题
- ¥15 一道python难题
- ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
- ¥15 牛顿斯科特系数表表示
- ¥15 arduino 步进电机
- ¥20 程序进入HardFault_Handler
- ¥15 oracle集群安装出bug
- ¥15 关于#python#的问题:自动化测试
- ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
- ¥15 教务系统账号被盗号如何追溯设备
- ¥20 delta降尺度方法,未来数据怎么降尺度