读书人

求大神帮小弟我给这个程序写注释小弟

发布时间: 2013-07-04 11:45:51 作者: rapoo

求大神帮我给这个程序写注释,我不太理解

#include <stdio.h>
#include <stdlib.h>
typedef struct BiTNode
{
long data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
//实现搜索
int Search(BiTree &T,BiTree &f,BiTree &p,long d)
{
if(!T)
{
p=f;return 0;
}
else if(d==T->data)
{
p=T;return 1;
}
else if(d<T->data)
{
return Search(T->lchild,T,p,d);
}
else
{
return Search(T->rchild,T,p,d);
}
}
//实现插入
int Insert(BiTree &T,long e)
{
BiTNode *f,*p,*s;
s=new BiTNode;
if(!s)return 0;
s->data=e;
s->lchild=s->rchild=NULL;
if(!(Search(T,f,p,e)))
{
if(e<p->data)
{
p->lchild=s;
return 1;
}
else
{p->rchild=s;
return 1;
}
}
else
return 0;
}
void Inorder(BiTree T)
{
if(!T) return;
Inorder(T->lchild);
printf("%d ",T->data);
Inorder(T->rchild);
}
void CreatT(BiTree &T,BiTree &w)
{
long e;
T=new BiTNode;
w=T;
scanf("%d",&e);
T->data=e;
T->lchild=T->rchild=NULL;
scanf("%d",&e);
while(e!=-1){
Insert(T,e);
scanf("%d",&e);
}
}

void main()
{
BiTree T=0;
BiTNode *w;
printf("请输入数据,以-1结束:\n");
CreatT(T,w);
printf("输出中序遍历结果为:\n");
Inorder(w);
printf("\n");

}

[解决办法]
#include <stdio.h>
#include <stdlib.h>
typedef struct BiTNode
{
long data;//节点存储的数据
struct BiTNode *lchild,*rchild;//节点的左孩子和右孩子
}BiTNode,*BiTree;
//实现搜索
int Search(BiTree &T,BiTree &f,BiTree &p,long d)
{
if(!T)//若节点T为已指向空
{
p=f;return 0;
}
else if(d==T->data)//若入参d等于节点T存储的数据
{
p=T;return 1;
}
else if(d<T->data)//若入参d小于节点T存储的数据
{
return Search(T->lchild,T,p,d);//递归搜索二叉树的左支
}
else
{
return Search(T->rchild,T,p,d);//递归搜索二叉树的右支
}
}
//实现插入
int Insert(BiTree &T,long e)
{
BiTNode *f,*p,*s;
s=new BiTNode;
if(!s)return 0;
s->data=e;
s->lchild=s->rchild=NULL;
if(!(Search(T,f,p,e)))//若二叉树中不存在此数据则开始插入想要插入的数据
{
if(e<p->data)//若参数e小于节点p的数据则将数据挂到该节点的左孩子
{
p->lchild=s;
return 1;
}
else //否则挂到该节点的右孩子
{p->rchild=s;
return 1;
}
}
else
return 0;
}
void Inorder(BiTree T)//按中序递归打印二叉树


{
if(!T) return;
Inorder(T->lchild);
printf("%d ",T->data);
Inorder(T->rchild);
}
void CreatT(BiTree &T,BiTree &w)//创建二叉树
{
long e;
T=new BiTNode;
w=T;
scanf("%d",&e);
T->data=e;
T->lchild=T->rchild=NULL;
scanf("%d",&e);
while(e!=-1){
Insert(T,e);
scanf("%d",&e);
}
}

void main()
{
BiTree T=0;
BiTNode *w;
printf("请输入数据,以-1结束:\n");
CreatT(T,w);
printf("输出中序遍历结果为:\n");
Inorder(w);
printf("\n");

}



另外,你这段程序的代码存在许多问题,不能实现你想要的功能。。。

读书人网 >C语言

热点推荐