标题:小弟写的huffman函数,运行中却意外中断了,找不出原因,还望帮忙
只看楼主
a740612348
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2012-9-20
结帖率:83.33%
 问题点数:0 回复次数:5 
小弟写的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
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
自己调试了没

DO IT YOURSELF !
2012-12-15 10:31
a740612348
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2012-9-20
得分:0 
调试了,但是程序中途会中断,推测是这个函数出了问题
2012-12-15 12:56
jnc
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-12-16
得分:0 


刚开始学,不懂哈
2012-12-16 00:11
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
得分:0 
跟进函数进行调试,看是哪一句遇到错误了

小小战士,战士中的战斗机!
2012-12-16 02:19
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.023806 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved