您所在位置: 网站首页 / C语言实现本科生导师制问题.doc / 文档详情
C语言实现本科生导师制问题.doc 立即下载
2025-01-04
约7.4千字
约10页
0
44KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

C语言实现本科生导师制问题.doc

C语言实现本科生导师制问题.doc

预览

免费试读已结束,剩余 5 页请下载文档后查看

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(2)本科生导师制问题
=1\*GB3①问题描述
在高校的教学改革中,有很多学校实行了本科生导师制。一个班级的学生被分给几个老师,每个老师带n个学生,如果该老师还带研究生,那么研究生也可直接带本科生。本科生导师制问题中的数据元素具有如下形式:
导师带研究生
(老师,((研究生1,(本科生1,…,本科生m1)),(研究生2,(本科生1,…,本科生m2))…))
导师不带研究生
(老师,(本科生1,…,本科生m))
导师的自然情况只包括姓名、职称;研究生的自然情况只包括姓名、班级;本科生的自然情况只包括姓名、班级。
=2\*GB3②基本要求
要求完成以下功能:
建立:建立导师广义表。
插入:将某位本科生或研究生插入到广义表的相应位置。
删除:将某本科生或研究生从广义表中删除。
查询:查询导师、本科生(研究生)的情况。
统计:某导师带了多少个研究生和本科生。
输出:将某导师所带学生情况输出。
退出:程序结束。
=3\*GB3③设计提示
本实验使用的数据结构是广义表,广义表采用头尾链表存储结构来实现。
定义教师、学生结点结构体如下:
typedefstructGLNode
{
	charname[100];/*教师或学生的姓名*/
	charprof[100];/*教师结点表示职称,学生结点表示班级*/
	inttype;/*结点类型:0-教师,1-研究生,2-本科生*/
struct{structGLNode*hp,*tp;}ptr;
/*hp指向同级的下一结点,tp指向下级的首结点*/
}GList;
人员信息的表示形式为:高老师-教授-0、李刚-二班-1、李明-二班-2.
人员信息中的姓名、职称、班级、人员类型用“-”隔开,如高老师-教授-0,“高老师”表示姓名,“教师”表示职称,“0”表示人员的类型是教师;李刚-二班-1,“李刚”表示姓名,“二班”表示班级,“1”表示人员的类型是研究生;李明-二班-2,“李明”表示姓名,“二班”表示班级,“2”表示人员的类型是本科生。
广义表((高老师-教授-0,(李明-一班-2,王平-二班-2)),(李老师-副教授-0,(白梅-二班-1,(李刚-一班-2)))可以用图3表示。
图3导师制用广义表实现示例
源代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedefstructGLNode//定义存储中缀表达式的结点类型
{charname[100];
charprof[100];
inttype;
struct{structGLNode*hp,*tp;}ptr;/*hp指向同级的下一结点,tp指向下级的首结点*/
}GList;
GList*GListCreate()//建立广义表
{GList*head,*p,*q,*s,*r;//简要介绍:head指向头结点;p指向导师结点;q指向研究生结点;r指向本科生节点;s指向新建立的节点
inti,j,b;
charstr[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)
{case0:if(head)
p->ptr.hp=s;//非首结点
else
head=s;//首结点的处理
p=s;
r=q=s;//a在此等于m,主要是处理本科生直属于导师的情况
break;
case1:if(p->ptr.tp)
q->ptr.hp=s;//非首结点的处理
else
q->ptr.tp=s;//首结点的处理
q=s;
r=s;
break;
case2:if(q->ptr.tp)
r->ptr.hp=s;//非首结点的处理
else
r->ptr.tp=s;//首结点的处理
r=s;
break;
default:printf("结点有误");
break;
}
printf("输入1:继续添加;输入0:录入结束");
scanf("%d",&b);
}
returnhead;
}
vo
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

C语言实现本科生导师制问题

文档大小:44KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用