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

关于树的创建的函数有关问题

2012-08-11 
关于树的创建的函数问题C/C++ code#include stdio.h#include stdlib.h#define Max 500typedef struct

关于树的创建的函数问题

C/C++ code
#include <stdio.h>#include <stdlib.h>#define Max 500typedef struct BiTNode//树结点结构{    char date;                       //数据    struct BiTNode *plchild,*prchild;//左右孩子指针}BiTNode, *BiTree;void CreateBiTree(BiTree T){    char c;    scanf("%c",&c);//输入节点数据     if(c == '#')//如果输入‘#’表示结点为空        T=NULL;    else{        if(!(T = (BiTree)malloc(sizeof(BiTNode))))//申请结点空间            exit(-1);        T->date = c;        //printf("%c",T->date);        CreateBiTree(T->plchild);//由建立左子树        CreateBiTree(T->prchild);//建立右子树    }}void Display(BiTree root)//层序输出树{    BiTree queue[Max],p;    int front=0,rear=0;    queue[rear++]=root;    if(NULL==root)return ;    while(rear!=front)    {        p=queue[front++];        printf("%c",p->date);        if(p->plchild)queue[rear++]=p->plchild;        if(p->prchild)queue[rear++]=p->prchild;    }}int main(){    BiTree p;//建立树节点    CreateBiTree(p);    Display(p);}


上面是一个简单的建立二叉树的程序,为什么程序会运行后会发生指针越界的问题啊?
找不出那个指针出问题了,求各位帮帮忙吧!

[解决办法]
C/C++ code
#include <stdio.h>#include <stdlib.h>#define Max 500typedef struct BiTNode//树结点结构{    char date;                       //数据    struct BiTNode *plchild,*prchild;//左右孩子指针}BiTNode, *BiTree;void CreateBiTree(BiTree* T){    char c;    scanf("%c",&c);//输入节点数据     getchar();    if(c == '#')//如果输入‘#’表示结点为空        *T=NULL;    else{        if(!(*T = (BiTree)malloc(sizeof(BiTNode))))//申请结点空间            exit(-1);        (*T)->date = c;        //printf("%c",T->date);        CreateBiTree(&((*T)->plchild));//由建立左子树        CreateBiTree(&((*T)->prchild));//建立右子树    }}void Display(BiTree root)//层序输出树{    BiTree queue[Max],p;    int front=0,rear=0;    queue[rear++]=root;    if(NULL==root)return ;    while(rear!=front)    {        p=queue[front++];        printf("%c",p->date);        if(p->plchild)queue[rear++]=p->plchild;        if(p->prchild)queue[rear++]=p->prchild;    }}int main(){    BiTree p;//建立树节点    CreateBiTree(&p);    Display(p);} 

热点排行