帮忙完成一下这段程序的注释(C语言版数据结构)

第二个
#include<stdio.h>
#include<stdlib.h>

#define TRUE 1
#define FALSE 0

typedef struct BTNode
{
int data;
struct BTNode *lchild,*rchild;
}BTNode;

BTNode *root;

void Insert(BTNode *s)
{
BTNode *p,*q;
if(root==NULL)
root=s;
else
{
p=root;
while(p!=NULL) //当p为空时,q就是可插入的地方
{
q=p; //当p向子数节点移动时,q记录p的双亲的位置
if(s->data<p->data)
p=p->lchild;
else
p=p->rchild;
}
if(s->data<q->data)
q->lchild=s;
else
q->rchild=s;
}
}

int Search(BTNode *s,int n)
{
BTNode *p;
p=s;
while(p!=NULL)
{
if(n==p->data) return 1;
if(n<p->data)
p=p->lchild;
else
p=p->rchild;
}
if(p==NULL) return 0;
}

void print(BTNode *t) //中序遍历二叉排序数树得到有序数列
{
if(t!=NULL)
{
print(t->lchild);
printf("%4d",t->data);
print(t->rchild);
}
}

void main()
{
BTNode *s;
int n;
int i,k;
root=NULL;
printf("请输入十个数:(建立十个结点的二叉排序树)\n");
for(i=0;i<10;i++)
{
scanf("%d",&k);
s=(BTNode *)malloc(sizeof(BTNode));
s->data=k;s->lchild=NULL;s->rchild=NULL;
Insert(s);
}
print(root);
printf("\n请出入关键值(待查找的数)n=?");
scanf("%d",&n);
if(Search(root,n)==1) printf("找到了!");
else printf("没有找到!");
printf("\n");

}

#include<stdio.h>
#include<stdlib.h>

#define TRUE 1
#define FALSE 0

typedef struct BTNode //定义结构体BTNode
{
int data;
struct BTNode *lchild,*rchild;
}BTNode;

BTNode *root; //定义指向根节点的指针

void Insert(BTNode *s) //插入节点的函数,使得左孩子的值小于父节点的值,右孩子的值大于父节点的值
{
BTNode *p,*q;
if(root==NULL) //如果根节点为NULL,将s节点作为根节点
root=s;
else
{
p=root;
while(p!=NULL) //当p为空时,q就是可插入的地方
{
q=p; //当p向子数节点移动时,q记录p的双亲的位置
if(s->data<p->data) //如果s节点的值小于p节点的值,p指向双亲左孩子
p=p->lchild;
else
p=p->rchild; //否则p指向双亲右孩子
}
if(s->data<q->data) //如果s节点的值小于p节点的值,s作为插入处节点的左孩子,否则作为其右孩子
q->lchild=s;
else
q->rchild=s;
}
}

int Search(BTNode *s,int n) //查找s中是否有数值n
{
BTNode *p;
p=s;
while(p!=NULL)
{
if(n==p->data) return 1; //如果找到返回1
if(n<p->data) //如果n小于p->data,查找左孩子,否则查找右孩子
p=p->lchild;
else
p=p->rchild;
}
if(p==NULL) return 0; //如果未找到,返回0
}

void print(BTNode *t) //中序遍历二叉排序数树得到有序数列
{
if(t!=NULL)
{
print(t->lchild); //错了吧,t=t->lchild
printf("%4d",t->data);
print(t->rchild);//错了吧,t=t->rchild

}
}

void main() //定义树的结构,然后调用函数实现各功能
{
BTNode *s;
int n;
int i,k;
root=NULL;
printf("请输入十个数:(建立十个结点的二叉排序树)\n");
for(i=0;i<10;i++)
{
scanf("%d",&k);
s=(BTNode *)malloc(sizeof(BTNode));
s->data=k;s->lchild=NULL;s->rchild=NULL;
Insert(s);
}
print(root);
printf("\n请出入关键值(待查找的数)n=?");
scanf("%d",&n);
if(Search(root,n)==1) printf("找到了!");
else printf("没有找到!");
printf("\n");

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-01-15
#include<stdio.h>
#include<stdlib.h>

#define TRUE 1
#define FALSE 0

typedef struct BTNode
{
int data;
struct BTNode *lchild,*rchild;
}BTNode; //二叉树的节点类型

BTNode *root;

void Insert(BTNode *s) //二叉排序树插入一个节点
{
BTNode *p,*q;
if(root==NULL)
root=s;
else
{
p=root;
while(p!=NULL) //当p为空时,q就是可插入的地方
{
q=p; //当p向子树节点移动时,q记录p的双亲的位置
if(s->data<p->data) //要插入值比p小
p=p->lchild; //左子树中寻找
else
p=p->rchild; //反之右子树中寻找
}
if(s->data<q->data) //要插入值比插入地方的双亲值小
q->lchild=s; //插入左子树
else
q->rchild=s; //反之插入右子树
}
}

int Search(BTNode *s,int n) //二叉排序中查找数值n
{
BTNode *p;
p=s; //每次和p值比较确定位置,p初始为根指针
while(p!=NULL)
{
if(n==p->data) return 1; //找到返回1
if(n<p->data) //值比p值小
p=p->lchild; //左子树中寻找
else
p=p->rchild; //反之右子树中寻找
}
if(p==NULL) return 0; //没有找到返回0
}

void print(BTNode *t) //中序遍历二叉排序数树得到有序数列
{
if(t!=NULL)
{
print(t->lchild);
printf("%4d",t->data);
print(t->rchild);
}
}
//ps:这是递归中根遍历,写法没有错

void main()
{
BTNode *s;
int n;
int i,k;
root=NULL;
printf("请输入十个数:(建立十个结点的二叉排序树)\n");
for(i=0;i<10;i++)
{
scanf("%d",&k);
s=(BTNode *)malloc(sizeof(BTNode));
s->data=k;s->lchild=NULL;s->rchild=NULL;
Insert(s);
}
print(root);
printf("\n请出入关键值(待查找的数)n=?");
scanf("%d",&n);
if(Search(root,n)==1) printf("找到了!");
else printf("没有找到!");
printf("\n");
}本回答被提问者采纳
第2个回答  2008-01-15
写了还要别人注释?
相似回答