数据结构本科生导师制问题研究生考试辅导咨询_研究生考试-辅导咨询.pdf
计算机科学与技术学院实验课程归档材料规范 实验报告一 实验课名称:数据结构与程序设计实验 实验名称:本科生导师制问题 实验类型:设计型实验 班级:学号:姓名:时间:一、问题描述 在高校的教学改革中,有很多学校实行了本科生导师制。一个班级的学生被分给几个老师,每个老师带 n 个学生,如果该老师还带研究生,那么研究生也可直接带本科生。本科生导师制问题中的数据元素具有如下形式:导师带研究生 (老师,(研究生 1,(本科生 1,本科生 m1),(研究生 2,(本科生 1,本科生 m2)导师不带研究生 (老师,(本科生 1,本科生 m)导师的自然情况只包括姓名、职称;研究生的自然情况只包括姓名、班级;本科生的自然情况只包括姓名、班级。二、数据结构设计 本实验使用的数据结构是广义表,广义表采用头尾链表存储结构来实现。定义教师、学生结点结构体如下:typedef struct GLNode char name100;/*教师或学生的姓名*/char prof100;/*教师结点表示职称,学生结点表示班级*/int type;/*结点类型:0-教师,1-研究生,2-本科生*/struct struct GLNode*hp,*tp;ptr;/*hp指向同级的下一结点,tp 指向下级的首结点*/GList;人员信息的表示形式为:高老师-教授-0、李刚-二班-1、李明-二班-2.人员信息中的姓名、职称、班级、人员类型用“-”隔开,如高老师-教授-0,“高老师”表示姓名,“教师”表示职称,“0”表示人员的类型是教师;李刚-二班-1,“李刚”表示姓名,“二班”表示班级,“1”表示人员的类型是研究生;李明-二班-2,“李明”表示姓名,“二班”表示班级,“2”表示人员的类型是本科生。广义表(高老师-教授-0,(李明-一班-2,王平-二班-2),(李老师-副教授-0,(白梅-二班-1,(李刚-一班-2)可以用图 3 表示。高老师教授0李明一班2王平二班2李老师副教授0白梅二班1李刚一班2 图 3 导师制用广义表实现示例 三、算法设计 建立:建立导师广义表。GList InitGList()GList L=NULL,*l;GList e;e=InitGLNode(teacherli,fujiaoshou,0);InsertFirst_GL(&L,e);e=InitGLNode(teachergao,jiaoshou,0);InsertFirst_GL(&L,e);l=&(L-ptr).tp);师制问题实验类型设计型实验班级学号姓名时间一问题描述在高校的教学改革中有很多学校实行了本科生导师制一个班级的学生被分给几个老师每个老师带个学生如果该老师还带研究生那么研究生也可直接带本科生本科生导师制问科生本科生导师的自然情况只包括姓名职称研究生的自然情况只包括姓名班级本科生的自然情况只包括姓名班级二数据结构设计本实验使用的数据结构是广义表广义表采用头尾链表存储结构来实现定义教师学生结点结构体如下教师结点人员信息的表示形式为高老师教授李刚二班李明二班人员信息中的姓名职称班级人员类型用隔开如高老师教授高老师表示姓名教师表示职称表示人员的类型是教师李刚二班李刚表示姓名二班表示班级表示人员的类型是研究生李 e=InitGLNode(wangping,erban,2);InsertFirst_GL(l,e);e=InitGLNode(liming,yiban,2);InsertFirst_GL(l,e);l=&(L-ptr).hp)-ptr).tp);e=InitGLNode(baimei,erban,1);InsertFirst_GL(l,e);l=&(*l)-ptr).tp);e=InitGLNode(ligang,yiban,2);InsertFirst_GL(l,e);return L;插入:将某位本科生或研究生插入到广义表的相应位置。int InsertFirst_GL(GList*L,GLNode*e)(e-ptr).hp=*L;*L=e;return 1;删除:将某本科生或研究生从广义表中删除。GList DeleteGLNode(GList*L,char*name)GList*l=L,*p,temp;if(l)if(!strcmp(*l)-name,name)temp=*l;*l=(*l)-ptr).hp;return temp;师制问题实验类型设计型实验班级学号姓名时间一问题描述在高校的教学改革中有很多学校实行了本科生导师制一个班级的学生被分给几个老师每个老师带个学生如果该老师还带研究生那么研究生也可直接带本科生本科生导师制问科生本科生导师的自然情况只包括姓名职称研究生的自然情况只包括姓名班级本科生的自然情况只包括姓名班级二数据结构设计本实验使用的数据结构是广义表广义表采用头尾链表存储结构来实现定义教师学生结点结构体如下教师结点人员信息的表示形式为高老师教授李刚二班李明二班人员信息中的姓名职称班级人员类型用隔开如高老师教授高老师表示姓名教师表示职称表示人员的类型是教师李刚二班李刚表示姓名二班表示班级表示人员的类型是研究生李 if(*l)-ptr).tp)p=&(*l)-ptr).tp);temp=DeleteGLNode(p,name);if(temp)return temp;if(*l)-ptr).hp)p=&(*l)-ptr).hp);temp=DeleteGLNode(p,name);if(temp)return temp;else return NULL;查询:查询导师、本科生(研究生)的情况。GList TravGList(GList L,char*name)GList l;while(L!=NULL)if(!strcmp(L-name,name)return L;l=TravGList(L-ptr).tp,name);if(l)return l;L=(L-ptr).hp;return NULL;师制问题实验类型设计型实验班级学号姓名时间一问题描述在高校的教学改革中有很多学校实行了本科生导师制一个班级的学生被分给几个老师每个老师带个学生如果该老师还带研究生那么研究生也可直接带本科生本科生导师制问科生本科生导师的自然情况只包括姓名职称研究生的自然情况只包括姓名班级本科生的自然情况只包括姓名班级二数据结构设计本实验使用的数据结构是广义表广义表采用头尾链表存储结构来实现定义教师学生结点结构体如下教师结点人员信息的表示形式为高老师教授李刚二班李明二班人员信息中的姓名职称班级人员类型用隔开如高老师教授高老师表示姓名教师表示职称表示人员的类型是教师李刚二班李刚表示姓名二班表示班级表示人员的类型是研究生李 统计:某导师带了多少个研究生和本科生。int countStud(GList L,int*i,int*j)if(L)if(L-type=1)(*i)+;else if(L-type=2)(*j)+;else;countStud(L-ptr).tp,i,j);countStud(L-ptr).hp,i,j);return 1;输出:将某导师所带学生情况输出。void PrintGLNode(GLNode*e)if(e=NULL)return;printf(%s-%s-%d,e-name,e-prof,e-type);打印:将广义表整个输出。void PrintGList(GList L)if(L=NULL)return;printf();while(L!=NULL)PrintGLNode(L);PrintGList(L-ptr).tp);printf();师制问题实验类型设计型实验班级学号姓名时间一问题描述在高校的教学改革中有很多学校实行了本科生导师制一个班级的学生被分给几个老师每个老师带个学生如果该老师还带研究生那么研究生也可直接带本科生本科生导师制问科生本科生导师的自然情况只包括姓名职称研究生的自然情况只包括姓名班级本科生的自然情况只包括姓名班级二数据结构设计本实验使用的数据结构是广义表广义表采用头尾链表存储结构来实现定义教师学生结点结构体如下教师结点人员信息的表示形式为高老师教授李刚二班李明二班人员信息中的姓名职称班级人员类型用隔开如高老师教授高老师表示姓名教师表示职称表示人员的类型是教师李刚二班李刚表示姓名二班表示班级表示人员的类型是研究生李 L=(L-ptr).hp;printf();退出:程序结束 四、界面设计 五、运行测试与分析 师制问题实验类型设计型实验班级学号姓名时间一问题描述在高校的教学改革中有很多学校实行了本科生导师制一个班级的学生被分给几个老师每个老师带个学生如果该老师还带研究生那么研究生也可直接带本科生本科生导师制问科生本科生导师的自然情况只包括姓名职称研究生的自然情况只包括姓名班级本科生的自然情况只包括姓名班级二数据结构设计本实验使用的数据结构是广义表广义表采用头尾链表存储结构来实现定义教师学生结点结构体如下教师结点人员信息的表示形式为高老师教授李刚二班李明二班人员信息中的姓名职称班级人员类型用隔开如高老师教授高老师表示姓名教师表示职称表示人员的类型是教师李刚二班李刚表示姓名二班表示班级表示人员的类型是研究生李 六、实验收获与思考 1掌握本科生导师制问题的思想与算法 2使用数据结构广义表实现本科生导师制问题 3结合理论,深入掌握知识 教师评分:教师签字:师制问题实验类型设计型实验班级学号姓名时间一问题描述在高校的教学改革中有很多学校实行了本科生导师制一个班级的学生被分给几个老师每个老师带个学生如果该老师还带研究生那么研究生也可直接带本科生本科生导师制问科生本科生导师的自然情况只包括姓名职称研究生的自然情况只包括姓名班级本科生的自然情况只包括姓名班级二数据结构设计本实验使用的数据结构是广义表广义表采用头尾链表存储结构来实现定义教师学生结点结构体如下教师结点人员信息的表示形式为高老师教授李刚二班李明二班人员信息中的姓名职称班级人员类型用隔开如高老师教授高老师表示姓名教师表示职称表示人员的类型是教师李刚二班李刚表示姓名二班表示班级表示人员的类型是研究生李