c语言实现本科生导师制问题.docVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(2)本科生导师制问题 = 1 \* GB3 ①问题描述 在高校的教学改革中,有很多学校实行了本科生导师制。一个班级的学生被分给几个老师,每个老师带n个学生,如果该老师还带研究生,那么研究生也可直接带本科生。本科生导师制问题中的数据元素具有如下形式: 导师带研究生 (老师,((研究生1,(本科生1,…,本科生m1)),(研究生2,(本科生1,…,本科生m2))…)) 导师不带研究生 (老师,(本科生1,…,本科生m)) 导师的自然情况只包括姓名、职称;研究生的自然情况只包括姓名、班级;本科生的自然情况只包括姓名、班级。 = 2 \* GB3 ②基本要求 要求完成以下功能: 建立:建立导师广义表。 插入:将某位本科生或研究生插入到广义表的相应位置。 删除:将某本科生或研究生从广义表中删除。 查询:查询导师、本科生(研究生)的情况。 统计:某导师带了多少个研究生和本科生。 输出:将某导师所带学生情况输出。 退出:程序结束。 = 3 \* GB3 ③设计提示 本实验使用的数据结构是广义表,广义表采用头尾链表存储结构来实现。 定义教师、学生结点结构体如下: typedef struct GLNode { char name[100]; /*教师或学生的姓名*/ char prof[100]; /*教师结点表示职称,学生结点表示班级*/ 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表示。 图3 导师制用广义表实现示例 源代码: #includestdio.h #includestdlib.h #includestring.h typedef struct GLNode //定义存储中缀表达式的结点类型 {char name[100]; char prof[100]; int type; struct {struct GLNode *hp,*tp;}ptr; /*hp指向同级的下一结点,tp指向下级的首结点*/ }GList; GList *GListCreate() //建立广义表 {GList *head,*p,*q,*s,*r; //简要介绍:head指向头结点;p指向导师结点;q指向研究生结点;r指向本科生节点; s指向新建立的节点 int i,j,b; char str[100]; b=1; head=p=q=r=s=NULL; while(b) {printf(请输入人员信息); scanf(%s,str); s =(GList *)malloc(sizeof(GList)); if(!s) printf(申请空间失败!); for(j=0,i=0;str[i] != -;j++,i++) //将字符串中的学生信息转化成学生结点 s-name[j] = str[i]; s-name[j] = \0; i=i+1; for(j=0;str[i] != -;j++,i++) s-prof[j] = str[i]; s-prof[j] = \0; i=i+1; s-type = str[i] - 48; s-ptr.hp=NULL; s-ptr.tp=NULL; switch(s-type) {case 0:if(head) p-ptr.hp=s; // 非首结点 else head=s; // 首结点的处理 p=s; r=q=s; // a在此等于m,主要是处理本科生直属于导师的情况 break;

文档评论(0)

kfcel5460 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档