| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1103 人关注过本帖
标题:在创建二叉树的过程中,为什么带参数就报错,不带参数就能通过?
取消只看楼主 加入收藏
风车转风车89
Rank: 2
等 级:论坛游民
帖 子:125
专家分:45
注 册:2014-9-15
结帖率:81.82%
收藏
已结贴  问题点数:40 回复次数:12 
在创建二叉树的过程中,为什么带参数就报错,不带参数就能通过?
这个程序能通过
Tree *creat_tree()
{
    int c;Tree *t;
    fscanf(fp,"%d",&c);// c的值只取0,1,2
    fgetc(fp);
    if(c==0)
        t=NULL;
    else
    {
        t=(Tree*)malloc(sizeof(Tree));
        fscanf(fp,"%d",&t->date);
        fgetc(fp);
        t->lchild=creat_tree();
        t->rchild=creat_tree();
    }
    return t;
}
而这一个就通不过
Tree *creat_tree(Tree *t)
{
    int c;Tree *t;
    fscanf(fp,"%d",&c);// c的值只取0,1,2
    fgetc(fp);
    if(c==0)
        t=NULL;
    else
    {
        t=(Tree*)malloc(sizeof(Tree));
        fscanf(fp,"%d",&t->date);
        fgetc(fp);
        creat_tree(t->lchild);
        creat_tree(t->rchild);
    }
    return t;
}
下面这个 我调试了一下 发现根节点的左右孩子节点的地址都是一个随地址而不是t=(Tree*)malloc(sizeof(Tree))的地址?一直不明白 希望大家能指点一下
搜索更多相关主题的帖子: return 二叉树 
2015-01-20 14:00
风车转风车89
Rank: 2
等 级:论坛游民
帖 子:125
专家分:45
注 册:2014-9-15
收藏
得分:0 
回复 2楼 wp231957
我 手误打错了   第二个函数里面没有 Tree *t;这个变量声明;
2015-01-20 14:26
风车转风车89
Rank: 2
等 级:论坛游民
帖 子:125
专家分:45
注 册:2014-9-15
收藏
得分:0 
[quote]以下是引用风车转风车89在2015-1-20 14:00:11的发言:

这里没有  Tree *t;这个变量声明
而这一个就通不过
Tree *creat_tree(Tree *t)
{
    int c;Tree *t;
2015-01-20 14:30
风车转风车89
Rank: 2
等 级:论坛游民
帖 子:125
专家分:45
注 册:2014-9-15
收藏
得分:0 
回复 5楼 wp231957
谢谢
2015-01-20 15:03
风车转风车89
Rank: 2
等 级:论坛游民
帖 子:125
专家分:45
注 册:2014-9-15
收藏
得分:0 
回复 5楼 wp231957
这是代码  1.txt是文件
3.zip (234.47 KB)
2015-01-20 15:10
风车转风车89
Rank: 2
等 级:论坛游民
帖 子:125
专家分:45
注 册:2014-9-15
收藏
得分:0 
回复 5楼 wp231957
#include <stdio.h>
#include <stdlib.h>

typedef struct tree
{
    int date;
    struct tree *lchild,*rchild;
}Tree;

FILE *fp;


Tree *creat_tree()
{
    int c;Tree *t;
    fscanf(fp,"%d",&c);// c的值只取0,1,2
    fgetc(fp);
    if(c==0)
        t=NULL;
    else
    {
        t=(Tree*)malloc(sizeof(Tree));
        fscanf(fp,"%d",&t->date);
        fgetc(fp);
        t->lchild=creat_tree();
        t->rchild=creat_tree();
    }
    return t;
}
/*
//....................................错误程序  不知错那
 Tree *creat_tree(Tree *t)
{
    int c;
    fscanf(fp,"%d",&c);// c的值只取0,1,2
    fgetc(fp);
    if(c==0)
        t=NULL;
    else
    {
        t=(Tree*)malloc(sizeof(Tree));
        fscanf(fp,"%d",&t->date);
        fgetc(fp);
        creat_tree(t->lchild);
        creat_tree(t->rchild);
    }
    return t;
}

*/
Tree* file(Tree *t)
{
    fp=fopen("E:\\1.txt","r");
    if(fp==NULL)
    {
        printf("  cannt open the file\n");
        exit(0);
    }
    else
        t=creat_tree();
    fclose(fp);
    return t;
}


/*  这个是排序树  
Tree *tree_sort(Tree *t,int a)
{
    Tree *t_node,*t1,*t2;
    t_node=(Tree*)malloc(sizeof(Tree));
    t_node->date=a;
    t_node->lchild=NULL;
    t_node->rchild=NULL;
    if(t==NULL)
        t=t_node;
    else
    {
        t1=t;
        while(t1)
        {
            if(t_node->date<t1->date)
            {
                t2=t1;t1=t1->lchild;
            }
            else
            {
                t2=t1;t1=t1->rchild;
            }
        }
        if(t2->date>t_node->date)
            t2->lchild=t_node;
        else
            t2->rchild=t_node;
    }
    return t;
}
*/
void traverse_tree(Tree *t)
{
    if(t)
    {
        traverse_tree(t->lchild);
        printf("   %d  ",t->date);
        traverse_tree(t->rchild);
    }
}

void main()
{
    int i, a[6]={7,56,26,45,8,9};
    Tree *t;
    t=NULL;
    /*
    for(i=0;i<6;i++)
        t=tree_sort(t,a[i]);
    traverse_tree(t);
    */
    t=file(t);
    traverse_tree(t);

}
2015-01-20 15:11
风车转风车89
Rank: 2
等 级:论坛游民
帖 子:125
专家分:45
注 册:2014-9-15
收藏
得分:0 
回复 9楼 forever74
什么意识  我不太明白
2015-01-20 16:24
风车转风车89
Rank: 2
等 级:论坛游民
帖 子:125
专家分:45
注 册:2014-9-15
收藏
得分:0 
回复 11楼 执笔画江山
你说的是file函数里的creat_tree调用吧;这个调用的是Tree* creat_tree()函数,我不明白的是为什么下面的构造二叉树的函数为什么错
2015-01-20 18:04
风车转风车89
Rank: 2
等 级:论坛游民
帖 子:125
专家分:45
注 册:2014-9-15
收藏
得分:0 
回复 15楼 执笔画江山
应该不是函数调用的错,我调试看的是根节点的叶子节点的指针在最后指向一个随机的地址,而不是叶子节点的地址;不知道为什么会发生错误?
2015-01-20 18:39
风车转风车89
Rank: 2
等 级:论坛游民
帖 子:125
专家分:45
注 册:2014-9-15
收藏
得分:0 
回复 17楼 forever74
谢谢
2015-01-23 10:14
快速回复:在创建二叉树的过程中,为什么带参数就报错,不带参数就能通过?
数据加载中...
 
   



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

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