您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 平衡二叉树学生信息管理系统程序
#includestdio.h#includestring.htypedefstructA{charNO[10];charname[10];charbirt[10];charclas[10];charsex[2];}Elemtype;typedefstructB{Elemtypedata;intbf;structB*lchild;structB*rchild;}node,*pnode;voidleft1(pnode&ptree,int&taller){pnodep1,p2;if(ptree-bf==0){ptree-bf=1;taller=1;}elseif(ptree-bf==-1){ptree-bf=0;taller=0;}else{p1=ptree-lchild;if(p1-bf==1){ptree-lchild=p1-rchild;p1-rchild=ptree;ptree-bf=p1-bf=0;ptree=p1;}elseif(p1-bf==-1){p2=p1-rchild;p1-rchild=p2-lchild;p2-lchild=p1;ptree-lchild=p2-rchild;p2-rchild=ptree;if(p2-bf==0)ptree-bf=p1-bf=0;elseif(p2-bf==1){p1-bf=0;ptree-bf=-1;}else{p1-bf=1;ptree-bf=0;}ptree=p2;ptree-bf=0;}taller=0;}}voidright1(pnode&ptree,int&taller){pnodep1,p2;if(ptree-bf==0){ptree-bf=-1;taller=1;}elseif(ptree-bf==1){ptree-bf=0;taller=0;}else{p1=ptree-rchild;if(p1-bf==-1){ptree-rchild=p1-lchild;p1-lchild=ptree;ptree-bf=p1-bf=0;ptree=p1;}elseif(p1-bf==1){p2=p1-lchild;p1-lchild=p2-rchild;p2-rchild=p1;ptree-rchild=p2-lchild;p2-lchild=ptree;if(p2-bf==0)ptree-bf=p1-bf=0;elseif(p2-bf==-1){p1-bf=0;ptree-bf=1;}else{p1-bf=-1;ptree-bf=0;}ptree=p2;ptree-bf=0;}taller=0;}}intinsert(pnode&ptree,Elemtypee,int&taller){if(ptree==NULL){ptree=newnode;ptree-data=e;ptree-lchild=ptree-rchild=NULL;ptree-bf=0;taller=1;}else{if(strcmp(e.NO,ptree-data.NO)==0){taller=0;return0;}if(strcmp(e.NO,ptree-data.NO)0){if((insert(ptree-lchild,e,taller))==0)return0;if(taller==1)left1(ptree,taller);}else{if((insert(ptree-rchild,e,taller))==0)return0;if(taller==1)right1(ptree,taller);}}return1;}voidleft2(pnode&ptree,int&taller){pnodep1,p2;if(ptree-bf==1){ptree-bf=0;taller=1;}elseif(ptree-bf==0){ptree-bf=-1;taller=0;}else{p1=ptree-rchild;if(p1-bf==0){ptree-rchild=p1-lchild;p1-lchild=ptree;p1-bf=1;ptree-bf=-1;ptree=p1;taller=0;}elseif(p1-bf==-1){ptree-rchild=p1-lchild;p1-lchild=ptree;ptree-bf=p1-bf=0;ptree=p1;taller=1;}else{p2=p1-lchild;p1-lchild=p2-rchild;p2-rchild=p1;ptree-rchild=p2-lchild;p2-lchild=ptree;if(p2-bf==0){ptree-bf=0;p1-bf=0;}elseif(p2-bf==-1){ptree-bf=1;p1-bf=0;}else{ptree-bf=0;p1-bf=-1;}p2-bf=0;ptree=p2;taller=1;}}}voidright2(pnode&ptree,int&taller){pnodep1,p2;if(ptree-bf==-1){ptree-bf=0;taller=1;}elseif(ptree-bf==0){ptree-bf=1;taller=0;}else{p1=ptree-lchild;if(p1-bf==0){ptree-lchild=p1-rchild;p1-rchild=ptree;p1-bf=-1;ptree-bf=1;ptree=p1;taller=0;}elseif(p1-bf==1){ptree-lchild=p1-rchild;p1-rchild=ptree;ptree-bf=p1-bf=0;ptree=p1;taller=1;}else{p2=p1-rchild;p1-rchild=p2-lchild;p2-lchild=p1;ptree-lchild=p2-rchild;p2-rchild=ptree;if(p2-bf==0){ptree-bf=0;p1-bf=0;}elseif(p2-bf==1){ptree-bf=-1;p1-bf=0;}else{ptree-bf=0;p1-bf=1;}p2-bf=0;ptree=p2;taller=1;}}}voiddelete2(pnodeq,pnode&r,int&taller){if(r-rchild==NULL){q-data=r-data;q=r;r=r-lchild;deleteq;taller=1;}else{delete2(q,r-rchild,taller);if(taller==1)right2(r,taller);}}intdelete1(pnode&ptree,charx[10],int&taller){intk;pnodeq;if(ptree==NULL)return0;elseif(strcmp(x,ptree-data.NO)0){k=delete1(ptree-lchild,x,taller);if(taller==1)left2(ptree,taller);returnk;}elseif(strcmp(x,ptree-data.NO)0){k=delete1(ptree-rchild,x,taller);if(taller==1)right2(ptree,taller);returnk;}else{q=ptree;if(ptree-rchild==NULL){ptree=ptree-lchild;deleteq;taller=1;}elseif(ptree-lchild==NULL){ptree=ptree-rchild;deleteq;taller=1;}else{delete2(q,q-lchild,taller);if(taller==1)left2(q,taller);ptree=q;}return1;}}voidcreate(pnode&ptree,intn){intj;Elemtypee;printf(输入学生信息:姓名,学号,生日,班级,性别\n);for(inti=0;in;i++){scanf(%s%s%s%s%s,e.name,e.NO,e.birt,e.clas,e.sex);insert(ptree,e,j);}}voiddisplay(pnodeptree){if(ptree){display(ptree-lchild);printf(%-10s%-10s%-10s%-10s%-10s\n,ptree-data.name,ptree-data.NO,ptree-data.birt,ptree-data.clas,ptree-data.sex);display(ptree-rchild);}}voidfind(pnodeptree,char*ch){if(ptree){if(strcmp(ptree-data.name,ch)==0){printf(姓名学号生日班级性别\n);printf(%-10s%-10s%-10s%-10s%-10s\n\n,ptree-data.name,ptree-data.NO,ptree-data.birt,ptree-data.clas,ptree-data.sex);return;}else{find(ptree-lchild,ch);find(ptree-rchild,ch);}}}voidsave(pnodeptree,FILE*p){if(ptree){save(ptree-lchild,p);p=fopen(student.txt,a);fprintf(p,%s\t%s\t%s\t%s\t%s\n,ptree-data.name,ptree-data.NO,ptree-data.birt,ptree-data.clas,ptree-data.sex);fclose(p);save(ptree-rchild,p);}}voidread(pnode&ptree,FILE*p){intj;charc;Elemtypee;if((p=fopen(student.txt,r))==NULL)return;while((c=fgetc(p))!=EOF){fscanf(p,%s%s%s%s%s,e.name,e.NO,e.birt,e.clas,e.sex);insert(ptree,e,j);}fclose(p);}voidPrint(pnodeptree,intindent){if(ptree==NULL)return;for(inti=0;iindent;i++)printf(|-----);printf(%-10s%-10s%-10s%-10s%-10s\n,ptree-data.name,ptree-data.NO,ptree-data.birt,ptree-data.clas,ptree-data.sex);Print(ptree-lchild,indent+1);Print(ptree-rchild,indent+1);}voidchange(pnodeptree,Elemtypee){if(ptree==NULL)return;else{if(strcmp(ptree-data.NO,e.NO)==0){ptree-data=e;return;}else{change(ptree-lchild,e);change(ptree-rchild,e);}}}voidmale(pnodeptree){charm[2]={m};if(ptree){male(ptree-l
本文标题:平衡二叉树学生信息管理系统程序
链接地址:https://www.777doc.com/doc-6084055 .html