收藏 分享(赏)

数据结构 本科生导师制问题.doc

上传人:weiwoduzun 文档编号:5658660 上传时间:2019-03-11 格式:DOC 页数:5 大小:142.50KB
下载 相关 举报
数据结构 本科生导师制问题.doc_第1页
第1页 / 共5页
数据结构 本科生导师制问题.doc_第2页
第2页 / 共5页
数据结构 本科生导师制问题.doc_第3页
第3页 / 共5页
数据结构 本科生导师制问题.doc_第4页
第4页 / 共5页
数据结构 本科生导师制问题.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

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

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

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

4、导师制用广义表实现示例三、算法设计建立:建立导师广义表。GList InitGList()GList L = NULL, *l;GList e;e = InitGLNode(“teacherli“, “fujiaoshou“, 0);InsertFirst_GL(e = InitGLNode(“teachergao“, “jiaoshou“, 0);InsertFirst_GL(l = e = InitGLNode(“wangping“, “erban“, 2);InsertFirst_GL(l, e);e = InitGLNode(“liming“, “yiban“, 2);InsertFi

5、rst_GL(l, e);l = e = InitGLNode(“baimei“, “erban“, 1);InsertFirst_GL(l, e);l = 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 *nam

6、e)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 = temp = DeleteGLNode(p, name);if(temp) return temp;if(*l)-ptr).hp)p = temp = DeleteGLNode(p, name);if(temp) return temp;elsereturn NULL;查询:查询导师、本科生(研究生)的情况。GList TravGList(GList L, char

7、*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);

8、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(“)“);退出:程序结束四、界面设计5、 运行测试与分析六、实验收获与思考1 掌握本科生导师制问题的思想与算法2 使用数据结构广义表实现本科生导师制问题3 结合理论,深入掌握知识教师评分:教师签字:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报