2022年数据结构本科生导师制问题

上传人:cl****1 文档编号:567299189 上传时间:2024-07-19 格式:PDF 页数:5 大小:175.76KB
返回 下载 相关 举报
2022年数据结构本科生导师制问题_第1页
第1页 / 共5页
2022年数据结构本科生导师制问题_第2页
第2页 / 共5页
2022年数据结构本科生导师制问题_第3页
第3页 / 共5页
2022年数据结构本科生导师制问题_第4页
第4页 / 共5页
2022年数据结构本科生导师制问题_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《2022年数据结构本科生导师制问题》由会员分享,可在线阅读,更多相关《2022年数据结构本科生导师制问题(5页珍藏版)》请在金锄头文库上搜索。

1、计算机科学与技术学院实验课程归档材料规范实验报告一实验课名称:数据结构与程序设计实验实验名称: 本科生导师制问题实验类型: 设计型实验班级:学号:姓名:时间:一、问题描述在高校的教学改革中, 有很多学校实行了本科生导师制。一个班级的学生被分给几个老师, 每个老师带 n 个学生,如果该老师还带研究生, 那么研究生也可直接带本科生。本科生导师制问题中的数据元素具有如下形式:导师带研究生(老师, ( (研究生 1, (本科生 1,本科生 m1) ) , (研究生 2, (本科生 1,本科生 m2) ) )导师不带研究生(老师, (本科生 1,本科生 m) )导师的自然情况只包括姓名、职称;研究生的自

2、然情况只包括姓名、班级;本科生的自然情况只包括姓名、班级。二、 数据结构设计本实验使用的数据结构是广义表,广义表采用头尾链表存储结构来实现。定义教师、学生结点结构体如下:typedef struct GLNode char name100; /* 教师或学生的姓名 */ char prof100; /* 教师结点表示职称,学生结点表示班级*/ int type; /* 结点类型: 0-教师, 1-研究生, 2-本科生 */ struct struct GLNode *hp, *tp; ptr; /*hp 指向同级的下一结点, tp 指向下级的首结点 */ GList; 人员信息的表示形式为:高

3、老师-教授-0、李刚 -二班-1、李明 -二班-2. 人员信息中的姓名、职称、班级、人员类型用“-”隔开,如高老师 -教授-0,“高老师”表示姓名, “教师”表示职称, “0”表示人员的类型是教师;李刚-二班-1, “李刚”表示姓名,“二班”表示班级,“1”表示人员的类型是研究生;李明-二班-2, “李明”表示姓名, “二班”表示班级, “2”表示人员的类型是本科生。广义表( (高老师 -教授-0, (李明 -一班-2,王平-二班-2) ) , (李老师 -副教授 -0,(白梅 -二班-1, (李刚 -一班-2) ) )可以用图 3 表示。精选学习资料 - - - - - - - - - 名师

4、归纳总结 - - - - - - -第 1 页,共 5 页高老师教授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 = InitGLNo

5、de(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

6、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; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 5 页 *l = (*l)-ptr).hp; return temp; if(*l)-ptr

7、).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

8、 = 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

9、 *e) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 5 页 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(); 退出:程序结束四、界面设计五、运行测试与分析精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 5 页六、实验收获与思考1掌握本科生导师制问题的思想与算法2使用数据结构广义表实现本科生导师制问题3结合理论,深入掌握知识教师评分:教师签字:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 5 页

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号