| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 455 人关注过本帖
标题:小弟写的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: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册: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
快速回复:小弟写的huffman函数,运行中却意外中断了,找不出原因,还望帮忙
数据加载中...
 
   



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

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