帮修改程序,优化程序。
某高校下设若干个二级学院,每个二级学院下设若干个专业,各个专业下分多个班级,为了方便教师和学生了解各个学院的情况,请为我校的机构设计一棵树。 要求:用C/C++编写,建立文件夹
1 建立机构树。树的存储结构采用左孩子——右兄弟链表
2 输出所有二级学院的名称
3 查询并输出某个二级学院下设的各个专业的名称
4 查询并输出某专业所属的二级学院的名称
5 查询并输出某班级所属的专业名称和二级学院的名称
6 人机交互界面
#include <stdio.h>
#include <math.h>
#include <iostream.h>
#include<stdlib.h>
typedef struct School{ //用二叉链表法建树
char data[20];//要用数组
struct School *child, *sibling;
}School,*S;
void CreatBiTree(S &T){
char ch;
cin>>ch;
if(ch='$')
return;
else {
T= new School;
T->data=ch;
CreatBiTree(T->child);
CreatBiTree(T->sibling);
}
}
void quer1(S T){
printf("请输入查询二级学院名称:\n");
School *p;
char r;
cin>>r;
p=p->child;
while(p->data!=r){
p=p->sibling;
if(p->data==NULL)
printf("该校没有这个学院\n");break;}
if(p->data==r)
p=p->child;
while(p){
printf("%c/t",p->data);
p=p->sibling;
}
}
void quer2(S T){
printf("请输入查询专业名称: \n");
School *p,*q;
char r;
cin>>r;
p=p->child;
q=p->child ;
while(q->data!=r)
{ q=q->sibling;
if(q==NULL)
p=p->sibling;
q=p->child;
if(p==NULL&&q==NULL)
printf("该校没有这个专业\n");break;
}
printf("%c/n",p->data);
}
void quer3(S T){
printf("请输入查询专业名称: \n");
School *p,*q,*y;
char r;
cin>>r;
p=p->child;
q=p->child;
y=q->child;
while(y->data!=r){
y=y->sibling;
if(y==NULL)
q=q->sibling;
if(q==NULL)
p=p->sibling;
if(p==NULL)
printf("该校没有这个班级\n");break;
}
if(y->data ==r)
printf("%c%c\n",p->data ,q->sibling );
}
void main(){
// FILE * fp;
S T;
// if((fp=fopen("专业班级.txt","w"))==NULL){
// fp=fopen("专业班级.txt","w");
// fclose(fp);
// }
CreatBiTree(T);
printf(" 河南科技学院专业班级查询 \n ");
printf("1.查询二级学院的专业\n");
printf("2.查询专业所属学院\n");
printf("3.查询班级所属学院,专业\n");
int s;
do{
cin>>s;
switch(s){
case 1: quer1(T) ;break ;
case 2: ;break ;
case 3: ;break;
case 0: ;break;
default :printf("输入有误,请重新输入");
}
}while(s=1&&2&&3);
system("cls");
}