本程序以二叉排序树为数据结构,构造了一个学生信息管理系统,可以进行建立 编辑 插入 删除 查找学生信息,本程序设计的亮点在于FindBSTree函数,此函数为通用函数,供建立 编辑 插入 查找 等操作服务
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct BSTree
{ int num;
char name[20];
char sex[20];
char major[20];
int enter;
struct BSTree *lchild,*rchild;
}BSTree;
int InputBSTree(BSTree *T,int *m);
int CreatBSTree(BSTree *T);
BSTree *FindBSTreeinsert(int num,BSTree *T,int *flag);
BSTree *FindBSTreeequal(int num,BSTree *T,int *flag);
int EditBSTree(BSTree *T);
BSTree *InsertBSTree(BSTree *T);
BSTree *DeleteBSTree(BSTree *T);
BSTree *DelBSTree(int num,BSTree *T,int *flag);
BSTree *Del(BSTree *T);
int SearchBSTree(BSTree *T);
int PrintBSTree(BSTree *T);
int Print(BSTree *T);
int Get_int(void);
int SaveBSTree(BSTree *T);
int Save(FILE *fp,BSTree *T);
void main(void)
{ BSTree *T=0;
int flag=0,m=0;
while(!(T=(BSTree *)malloc(sizeof(BSTree))))
continue;
T->lchild=T->rchild=0;
printf(" ---------------------------------------------------------/n");
printf(" | |/n");
printf(" | ^_^ 欢迎使用学生信息管理系统 |/n");
printf(" | 每个学生信息包括:学号,姓名,性别,专业,入学时间(年) |/n");
printf(" ---------------------------------------------------------/n");
do
{ printf("/n1,读入 | 2,编辑 | 3,插入 | 4,删除 | 5,查找(以学号)| 6,输出所有信息 | 0,退出/n操作=");
flag=Get_int();
switch(flag)
{ case 1: InputBSTree(T,&m); if(m) PrintBSTree(T); break;
case 2: EditBSTree(T); PrintBSTree(T);break;
case 3: T=InsertBSTree(T); PrintBSTree(T);break;
case 4: T=DeleteBSTree(T); PrintBSTree(T);break;
case 5: SearchBSTree(T); break;
case 6: PrintBSTree(T);break;
case 0: break;
default : printf("/n*********对不起,选择无效!*******/n");
}
}while(flag);
printf("/n您想保存吗?/n||1,保存|0,不保存||/n选择=");
flag=Get_int();
if(flag)
SaveBSTree(T);
printf("/n谢谢使用,按任意键继续/n");
getchar();
}
int InputBSTree(BSTree *T,int *m)
{
int flag=0;
char address[100];
FILE *fp=0;
BSTree *t=0,*S=0;
printf("你想用什么方式读