标题:小弟写的huffman函数,运行中却意外中断了,找不出原因,还望帮忙
取消只看楼主
a740612348
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2012-9-20
结帖率:83.33%
 问题点数:0 回复次数:2 
小弟写的huffman函数,运行中却意外中断了,找不出原因,还望帮忙
void Huffmancoding(Huffmantree &HT,Huffmancode &HC,int n)
{
    int s1, s2,f,c;
    Huffmantree p;
    int m,i,start;
    char *cd;
    if (n<=1)
        printf("ERROR");
    m=2*n-1;
    HT=(Huffmantree)malloc((m+1)*sizeof(Htnode));
    for (p=HT,i=1;i<=n;++i,++p)
    {
        fflush(stdin);
        printf ("请按顺序输入字符信息及对应权重:\n");
        scanf ("%c",&(*(HT+i)).letter);
        scanf ("%d",&(*(HT+i)).weight);
        (*(HT+i)).parent=0;
        (*(HT+i)).lchild=0;
        (*(HT+i)).rchild=0;
    }
    for (;i<=m;++i,++p)
    {
        (*(HT+i)).weight=0;
        (*(HT+i)).parent=0;
        (*(HT+i)).lchild=0;
        (*(HT+i)).rchild=0;
    }
    for (i=n+1;i<=m;++i)
    {
        Select(HT,i-1,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[c].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);
    }   
}
搜索更多相关主题的帖子: parent letter start 
2012-12-15 09:42
a740612348
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2012-9-20
得分:0 
调试了,但是程序中途会中断,推测是这个函数出了问题
2012-12-15 12:56
a740612348
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2012-9-20
得分:0 
经调试,是这个循环出了错,不懂在哪里
for (c=i,f=HT[c].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));
         }
2012-12-16 09:21



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




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

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