| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1316 人关注过本帖, 1 人收藏
标题:二叉树,找不到错误
只看楼主 加入收藏
captain2050
Rank: 2
等 级:论坛游民
帖 子:57
专家分:43
注 册:2016-7-15
结帖率:92.86%
收藏(1)
已结贴  问题点数:20 回复次数:4 
二叉树,找不到错误
无法输出,不知道为什么(为了方便,头尾件都放在jack.h里了)
程序代码:
#include"jack.h"

struct tree
{
  char data;
  struct tree *l_node,*r_node;
};
typedef struct tree TREE;

int creat_tree(TREE *root)
{
  char c;
      c=getchar();
      if(c != ' ')
    {
      root=malloc(sizeof(TREE));
      root->data=c;
      creat_tree(root->l_node);
      creat_tree(root->r_node);
    }
      else
    root=NULL;
}

int print_tree(TREE *root)
{
  if(root)
    {
      printf("%c ",root->data);
      print_tree(root->l_node);
      print_tree(root->r_node);
    }
}

int main()
{
  TREE *root=NULL;
  creat_tree(root);
  print_tree(root);
}

搜索更多相关主题的帖子: 二叉树 struct tree data int 
2018-04-09 07:47
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:20 
函数返回值改改

root=creat_tree(root);

或者函数参数类型改改

creat_tree(&root);

~

[此贴子已经被作者于2018-4-9 09:15编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-04-09 09:04
captain2050
Rank: 2
等 级:论坛游民
帖 子:57
专家分:43
注 册:2016-7-15
收藏
得分:0 
回复 2楼 九转星河
...不懂为啥书里的开头代码是
typedef struct bitnode {char data; struct bitnode *lchild,*rchild;} bitnod , *bitree;
然后创造二叉树时函数原型是这样的
creatbitree(bitree *t);
然后main里用这个函数时 是这样的
creatbitree(&t);

他用了双重指针么?为啥? 我写的哪里有问题么?

2018-04-09 09:36
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 3楼 captain2050
书上这样写是正常的~
简单说在执行第一个函数后输出root的值看看是否为NULL就知道怎么回事了,有时候实际编译结果比很多解释都要容易理解,清晰明了~不用多说~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-04-09 10:24
captain2050
Rank: 2
等 级:论坛游民
帖 子:57
专家分:43
注 册:2016-7-15
收藏
得分:0 
回复 4楼 九转星河
感谢这位老铁提示。改过来了。。
程序代码:
#include"jack.h"

struct tree
{
  char data;
  struct tree *l_node,*r_node;
};
typedef struct tree TREE;

TREE * creat_tree(TREE *root)
{
  char c;
      c=getchar();
      if(c != ' ')
    {
      root=malloc(sizeof(TREE));
      root->data=c;
      root->l_node=creat_tree(root->l_node);
      root->r_node=creat_tree(root->r_node);
    }
      else
    root=NULL;
      return root;
}

int print_tree(TREE *root)
{
  if(root)
    {
      printf("%c ",root->data);
      print_tree(root->l_node);
      print_tree(root->r_node);
    }
}

int main()
{
  TREE *root;
  root=creat_tree(root);
  print_tree(root);
}

2018-04-09 10:49
快速回复:二叉树,找不到错误
数据加载中...
 
   



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

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