資源簡介
二叉排序樹實現的學生管理
有創建插入 刪除 查找等功能
代碼片段和文件信息
#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???
評論
共有 條評論