关于树的中序输出的问题,2个相似的程序为何一个可以运行成功,另一个却不可以?
关于树的中序输出的问题,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




