|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 番茄 于 2013-6-30 14:46 编辑
#include<stdio.h>
#define num 100
typedef struct InFor
{
int No;
char Name[10];
int grade;
}InFor;
typedef struct BSTNode
{
InFor Stu[num];
struct BSTNode *lchild,*rchild;
}BSTNode,*BSTree;
BSTree ST;
BSTree InitBSTree(BSTree ST)
{
if(!sizeof(ST))
{
printf("初始化失败。!!");
}
else
printf("初始化成功!!可以继续操作。");
return ST;
}
void CreateBSTree(BSTree ST,int n)
{
int i;
printf("Please input the student's information:");
for(i=1;i<=n;i++)
{
printf("Please input the number:");
scanf("%d",&ST->Stu[num].No);
printf(" ");
printf("The student's name:");
scanf("%s",&ST->Stu[num].Name);
printf(" ");
printf("please input the student's grade:");
scanf("%d",&ST->Stu[num].grade);
printf("\n");
InsertNode(BT,key);
}
}
BSTree InsertNode(BSTree ST,int key)
{
BSTree p=ST,q,s;
int flag=0;
if(!Search(ST,p,q,key))
{
s=(BSTree)malloc(sizeof(BSTNode));
s->Stu[num].key=key;
s->lchild=NULL;
s->rchild=NULL;
flag=1;
if(!p)
ST=s;
else
{
if(key>p->Stu[num].key)
p->rchild=s;
else
p->lchild=s;
}
}
return flag;
}
int Search(BSTtree ST,BSTree p,BSTree q,int key)
{
int flag=0;
q=ST;
while(q)
{
if(key>q->Stu[num].No)
{
p=q;q=q->rchild;
}
else
{
if(key<q->Stu[num].No)
{
p=q;q=q->lchild;
}
else
{
flag=1;break;
}
}
}
return flag;
}
void main()
{
int ke,s,n;
char pan;
BSTtree ST,BSTree p,BSTree q;
int num=1;
ST=InitBSTree(ST);
while(num==1)
{
printf("请输入你要的操作:No1 创建数据表。No2 对创作的数据进行查找。\n");
scanf("%d",&n);
switch(n)
{
case 1: printf("请输入你要的你要输入学生的人数:");
scanf("%d",n)
CreateBSTree(BSTree ST,n);
break;
case 2: printf("请输入你要的查找学生的学号:");
scanf("%d",&ke);
s=search_SST(ST,ke,nu);
if(s)
{
printf("你要的学生信息是:");
printf("学号:%5d",BT->Stu[ke].NO);
printf("姓名:%s ",BT->Stu[ke].Name);
printf("分数:%d\n",BT->Stu[ke].Grade);
}
else
{
printf("查找失败,无信息显示!!是否插入新的数据?y是,任意键退出\n");
scanf("%c",&pan);
if(pan==y)
{
InsertNode(BSTree ST,int key);
}
else break;
}break;
default: break;
}
printf("是否继续?No1 继续 No2 退出");
scanf("%d",&num);
}
}
} |
|