资源简介
二叉排序树实现的学生管理
有创建插入 删除 查找等功能
代码片段和文件信息
#include
#include
#include
#include
typedef struct
{
long num;
char name[20];
char sex;
float cheng;
}std;
typedef struct binode
{
std data;
binode *lc*rc;
}binode*bitree;
long search(bitree Tlong nbitree fbitree &p)
{
if(!T)
{
p=f;
return 0;
}
else if(n==T->data.num)
{
p=T;
return 1;
}
else if(ndata.num)
return search(T->lcnTp);
else
return search(T->rcnTp);
}
long insert(bitree &Tstd e)
{
bitree ps;
if(!search(Te.numNULLp))
{
s=new binode;
s->data=e;
s->lc=s->rc=NULL;
if(!p){
T=s;
return 1;
}
else if(e.numdata.num)
p->lc=s;
else
p->rc=s;
}
}
void creat(bitree &Tlong n)
{
char a;
long i;
std e;
for(i=1;i<=n;i++)
{
printf(“请输入第 %d个学生的学号、姓名、成绩、性别(f/m):“i);
scanf(“%ld%s%f%c%c“&e.nume.name&e.cheng&a&e.sex);
getchar();
insert(Te);
}
}
void dele(bitree &p)
{
bitree qs;
q=new binode;
if(!p->lc)
{
q=p;
p=p->rc;
free(q);
}
else if(!p->rc)
{
q=p;
p=p->lc;
free(q);
}
else{
q=p;
s=p->lc;
while(s->rc){
q=s;
s=s->rc;
}
p->data=s->data;
if(p==q)
q->lc=s->lc;
else
q->rc=s->rc;
free(s);
}
}
long Delete(bitree &Tlong n)
{
if(!T)
return 0;
else if(n==T->data.num){
dele(T);
return 1;
}
else if(ndata.num)
return Delete(T->lcn);
else
return Delete(T->rcn);
}
void dis(bitree T)
{
if(T){
dis(T->lc);
printf(“%8ld%10s
评论
共有 条评论