C/C++ code#include
#include
#define MAX 20
#define null 0
int o=0;
typedef struct student
{
char code[8];
int score;
char name[15];
}student;
typedef struct bitnode
{
student data;
struct bitnode *lchild,*rchild;
}bitnode,*bitree;
typedef struct {
student *base;
}sqlist;
int insertbst(bitree &t,student e);
int ordertraverse(bitree t,sqlist &l);
int searchbst(bitree t,student key,bitree f,bitree &p);
void listinsert(sqlist &l,student e);
void initsqlist(sqlist &l);
void main()
{
int count=0;
sqlist l;
initsqlist(l);
student data;
bitree t=null;
int counter=0;
bitree x;
int i=0;
printf("enter counte of student\n");
scanf("%d",&count);
while(1<2)
{
printf("please enter info(code(8),name,score)\n");
printf("enter -1 to end\n");
scanf("%s%s%d",&(data.code),&(data.name),&(data.score));
if (data.code[0]=='-'||data.name[0]=='-'||data.score==-1)break;
else {
insertbst(t,data);counter++;}
if (counter==1)x=t;
}
ordertraverse(x,l);
printf("\n");
printf("按照成绩降序排列:\n");
for(i=0;i
printf("学号:%s ,姓名%s ,成绩 %d\n",l.base[i].code,l.base[i].name,l.base[i].score);
}
int searchbst(bitree t,student key,bitree f,bitree &p)
{
if (!t){p=f;return 0;}
else if (key.score==t->data.score){p=t;return 1;}
else if (key.score>=t->data.score)return searchbst(t->lchild,key,t,p);
else return searchbst(t->rchild,key,t,p);
}
int insertbst(bitree &t,student e)
{
bitree s;
bitree p;
int i=0;
if(!searchbst(t,e,NULL,p))
{
s=(bitree)malloc(sizeof(bitnode));
s->data.score=e.score;
s->lchild=s->rchild=NULL;
if(!p)t=s;
else if(e.score>p->data.score)p->lchild=s;
else p->rchild =s;
return 1;
}
else return 0;
}
int ordertraverse(bitree t,sqlist &l)
{
if(t->lchild)
{
ordertraverse(t->lchild,l);
//printf("%d ",t->data);
listinsert(l,t->data);
}
else if(t->rchild)
{
//printf("%d ",t->data);
listinsert(l,t->data);}
if(t->rchild)
{
ordertraverse(t->rchild,l);
}
if(!t->lchild&&!t->rchild)
{
// printf("%d ",t->data.score);
listinsert(l,t->data);
}
return 0;
}
void initsqlist(sqlist &l)
{
}
void listinsert(sqlist &l,student e)
{
static int o=0;
l.base[o++]=e;//access violation
}