首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

奇怪的有关问题,程序是没有异常的,如何不行呢

2012-03-09 
奇怪的问题,程序是没有错误的,怎么不行呢?我把程序写下便于大家分析:#defineMAX_TREE_DEGREE10#include s

奇怪的问题,程序是没有错误的,怎么不行呢?
我把程序写下便于大家分析:
    #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)

热点排行