CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  新手乐园

关于树的中序输出的问题,2个相似的程序为何一个可以运行成功,另一个却不可以?

楼主after_sss(最终の幻想)2006-06-03 21:00:02 在 C/C++ / 新手乐园 提问

关于树的中序输出的问题,2个相似的程序为何一个可以运行成功,另一个却不可以?  
   
  这个是可以成功的  
  #include<stdio.h>  
  #include<stdlib.h>  
  typedef   struct   node   *tree_pointer;  
  struct   node{  
  int   data;  
                  tree_pointer   left;  
  tree_pointer   right;  
  };  
   
  void   Create(tree_pointer   *ptr)  
  {  
  int   a;  
  printf("input:");  
  scanf("%d",&a);  
  if(a==0)  
  (*ptr)=NULL;  
  else{  
  (*ptr)=(tree_pointer)malloc(sizeof(node));  
  (*ptr)->data=a;  
  Create(&(*ptr)->left);  
  Create(&(*ptr)->right);  
  }  
  }  
   
  void   inorder(tree_pointer   ptr)  
  {  
  if(ptr){  
  inorder(ptr->left);  
  printf("%d   ",ptr->data);  
  inorder(ptr->right);  
  }  
  }  
  void   main()  
  {  
          tree_pointer   p;  
          Create(&p);  
          inorder(p);  
  }  
   
   
   
   
   
   
  这个不可以成功!  
  #include<stdio.h>  
  #include<stdlib.h>  
  typedef   struct   tree_node   *tree_pointer;  
  typedef   struct   tree_node{  
  int   data;  
  tree_pointer   left;  
  tree_pointer   right;  
  };  
  tree_pointer   t=NULL;  
   
   
  void   create(tree_pointer   *ptr){  
  int   data;  
  printf("输入数据:");  
   
  scanf("%d",&data);  
  if(data==0)  
  ptr=NULL;  
  else{  
  (*ptr)=(tree_pointer)malloc(sizeof(tree_node));  
  (*ptr)->data=data;  
  create(&(*ptr)->left);  
  create(&(*ptr)->right);  
  }  
  }  
   
  void   inorder(tree_pointer   ptr)  
  {  
  if(ptr){  
  inorder(ptr->left);  
  printf("%d",ptr->data);  
  inorder(ptr->right);  
  }  
  }  
   
   
  void   main(){  
  create(&t);  
  inorder(t);  
  } 问题点数:20、回复次数:3Top

1 楼jixingzhong(瞌睡虫·星辰)回复于 2006-06-04 10:06:09 得分 20

全局也是可以的   ...  
   
  第二个程序中修改:  
  void   inorder(tree_pointer   ptr)  
  {  
          if(ptr){  
                  inorder(ptr->left);  
                  printf("%d   ",ptr->data);  
                  inorder(ptr->right);  
          }  
  }  
  ====》》》  
  void   inorder(tree_pointer   ptr)  
  {  
          if(ptr->data   !=   0){  
                  inorder(ptr->left);  
                  printf("%d   ",ptr->data);  
                  inorder(ptr->right);  
          }  
  }  
   
  就可以了   ...Top

2 楼jixingzhong(瞌睡虫·星辰)回复于 2006-06-04 10:32:13 得分 0

...  
  汗,  
  呵呵     第二个程序明显有错误,修改如下:  
  修改语句已经注明:  
   
  void   create(tree_pointer   *ptr){  
          int   data;  
          printf("输入数据:");  
   
          scanf("%d",&data);  
          if(data==0)  
                  (*ptr)=NULL;     //这里明显有错误!!  
          else{  
                  (*ptr)=(tree_pointer)malloc(sizeof(struct   tree_node));  
                  (*ptr)->data=data;  
                  create(&(*ptr)->left);  
                  create(&(*ptr)->right);  
          }  
  }  
   
  void   inorder(tree_pointer   ptr)   //这个函数不需要改!!  
  {  
          if(ptr){  
                  inorder(ptr->left);  
                  printf("%d   ",ptr->data);  
                  inorder(ptr->right);  
          }  
  }Top

3 楼jixingzhong(瞌睡虫·星辰)回复于 2006-06-04 10:33:33 得分 0

楼主应该仔细比较一下程序,  
  就可以发现问题所在了   ....Top

相关问题

关键词

得分解答快速导航

  • 帖主:after_sss
  • jixingzhong

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo