奇怪的问题,程序是没有错误的,怎么不行呢?
我把程序写下便于大家分析:
#define MAX_TREE_DEGREE 10
#include <stdio.h>
#include <stdlib.h>
typedef struct BTnode{
char data;
struct BTnode* lchild;
struct BTnode* rchild;
}BTnode,*BTree;
//建立树
int createBTree(BTree T){
char ch;
if((ch = getchar())== ' ')
T = NULL;
else{
if(!(T=(BTnode*)malloc(sizeof(BTnode))))
return -1;
T-> data = ch;
createBTree(T-> lchild);
createBTree(T-> rchild);
}
return 1;
}
//遍历
int preOrdTr1(BTree T){
if(T){
if(print(T))
if(preOrdTr1(T-> lchild));
if(preOrdTr1(T-> rchild));
return 1;
return 0;
}else return 1;
}
//print函数
int print(BTree T){
printf( "%c ",T-> data);
return 1;
}
//主函数
int main(){
BTree T;
createBTree(T);
preOrdTr1(T);
system( "pause ");
return 0;
}
// 显示"****程序出现错误,对于此表示抱歉什么",谢谢大家分析
[解决办法]
按你的写法,当外部一个BTree型变量给createBTree做实参,由createBTree函数中的形参T接收,此后进行的T=(BTnode*)malloc(sizeof(BTnode))都是针对形参T的,并不能反馈给外面的实参.所以实际上树的各个结点之间并没有连接起来.
[解决办法]
int createBTree(BTree T)
==>
int createBTree(BTree &T)