数据结构 广义表应用方案

本科生导师制问题设计方案

1. 问题描述

在高校的教学改革中,有很多学校实行了本科生导师制。一个班级的学生被分给几个老师,每个老师带领n 个学生,如果老师还带研究生,那么研究生也可直接负责本科生。 本科生导师制问题中的数据元素具有如下形式:

⑴ 导师带研究生:

(老师,((研究生1, (本科生1, „, 本科生m )) , „ ))

⑵ 导师不带研究生:

(老师, (本科生1, „, 本科生m ))

导师的自然情况只包括姓名、职称;研究生的自然情况只包括姓名、班级;本科生的自然情况只包括姓名、班级。

2. 功能要求

要求完成以下功能:

⑴ 插入:将某位本科生或研究生插入到广义表的相应位置;

⑵ 删除:将某本科生或研究生从广义表中删除;

⑶ 查询:查询导师、本科生(研究生)的情况;

⑷ 统计:某导师带了多少个研究生和本科生;

⑸ 输出:将某导师所带学生情况输出。

3 实现要点

对广义表采用头尾表示方的存储结构,在建立广义表时,由广义表的书写形式转化头尾存储结构,还要把人员信息的书面形式转化为具体的类。

人员信息的书面形式用这样的形式:高老师-教授-0、李刚-二班-1、李明-二班-2 人员信息中的姓名、职称、班级、人员类型用“-”隔开,如:高老师-教授-0,高老师表示姓名,教师表示职称,0 表示人员的类型是教师;李刚表示姓名,二班表示班级,1 表示人员的类型是研究生;李明表示姓名,二班表示班级,2 表示人员的类型是本科生 4 类定义

为人员信息对象(存储学生、老师的姓名、班级或职称信息)建立Personnel 类,其类定义如下:

class Personnel

{

public:

Personnel(string st);

Personnel();

string GetPersonnelinfo();

int GetTag();//返回人员类型

string GetPersonnelname(); //返回人员姓名

private:

int tag; //标识人员的类型

string personnelinfo; //学生班级和教师职称

string personnelname; //人员姓名

};

在Personnel 类中,提供了如下成员函数:

(1)函数声明: Personnel(string st)

完成的功能:有参构造函数,把st 表示的信息转化为人员的相应信息

(2)函数声明: Personnel()

完成的功能: 无参构造函数,初始化人员信息

(3)函数声明: string GetPersonnelinfo()

完成的功能: 返回学生班级和教师职称信息

(4)函数声明: int GetTag()

完成的功能: 返回人员类型

(5)函数声明: string GetPersonnelname ()

完成的功能: 返回人员姓名

为广义表的节点信息建立GLNode 类,其类定义如下:

template

struct GLNode

{

int tag;

T data;

struct atom

{

GLNode *hp, *tp;

} ptr;

};

为广义表建立GLists 类,其类定义如下:

template

class GLists

{

public:

GLists();

GLists(string st);

GLists(GLists ls1, GLists ls2);

~GLists( ){delete [] ls;}

int Depth( );

GLists *Head( );

GLists *Tail( );

void Prnt();

void QueryInfo(GLNode* ls,string manname);

void StatisticInfo(GLNode* ls,string mannameg);

void StudentInfo(GLNode* ls,string mannameg);

bool DelStudent(GLNode* ls,string mannameg);

bool InsertStudent(GLNode* ls,string mannameg,string stuinfo); void Setinfo();

void Outinfo();

GLNode* Getls();

void OutStatisticinfo() ;

private:

GLNode* ls;

string stprt;

void Server(string &st,string &hst);

GLNode* Crtlists(string st);

void Ena(string str);

void Prt(GLNode* ls);

int NumberStudent;

int Numbergraduate;

bool outflag ;

};

在GLists 类中,提供了如下成员函数:

(1) 函数声明: GLists()

完成的功能:初始化为空的广义表

(2)函数声明: GLists(string st)

完成的功能: 按广义表的书面格式建立广义表的存储结构

截图

:

(3)函数声明: GLists(GLists ls1, GLists ls2)

完成的功能: 用表头ls1和表尾ls2构造广义表

(4)函数声明: ~GLists( )

完成的功能: 释放广义表中各结点的存储空间

(5)函数声明: int Depth( )

完成的功能: 求广义表的深度

(6)函数声明: GLists *Head( )

完成的功能: 求广义表的表头

(7)函数声明: GLists *Tail( )

完成的功能: 求广义表的表尾

(8)函数声明: void Prnt()

完成的功能: 将广义表显示出来

(9)函数声明: void QueryInfo(GLNode* ls,string manname)

完成的功能: 查询ls 所指的广义表中的姓名为manname 的信息

截图:

(10)函数声明: void StatisticInfo(GLNode* ls,string mannameg)

完成的功能: 统计ls 所指的广义表中的姓名为mannameg 的老师所带的学生人数

截图:

(11) 函数声明: void StudentInfo(GLNode* ls,string mannameg)

完成的功能: 显示ls 所指的广义表中的姓名为manname 的老师所带的学生

截图:

(12)函数声明: bool DelStudent(GLNode* ls,string mannameg)

完成的功能: 删除ls 所指的广义表中的姓名为mannameg 的学生

截图:

(13)函数声明:bool InsertStudent(GLNode* ls,string mannameg,string stuinfo)

完成的功能: 把学生信息为stuinfo 的学生插入到ls 所指的广义表中的姓名为

mannameg 的后边

截图:

(14)函数声明: void Setinfo()

完成的功能: 初始化广义表的信息

(15)函数声明: void Outinfo()

完成的功能: 输出广义表的信息

(16) 函数声明: GLNode* Getls()

完成的功能: 输出广义表的ls 成员

(17)函数声明: void OutStatisticinfo()

完成的功能: 显示统计姓名为manname 的老师所带的学生人数的信息

(18)函数声明: void Server(string &st,string &hst)

完成的功能: 从st 中取出第一成员存入到hst ,其余的成员留在st 中

(19)函数声明: GLNode* Crtlists(string st)

完成的功能: 把广义表的书面格式st 转化为广义表的头尾存储结构

(20)函数声明: void Ena(string str)

完成的功能: 把str 表示信息存储到stprt 中,已备以后显示

(21)函数声明: void Prt(GLNode* ls)

完成的功能: 将ls 所指的广义表显示出来

本科生导师制问题设计方案

1. 问题描述

在高校的教学改革中,有很多学校实行了本科生导师制。一个班级的学生被分给几个老师,每个老师带领n 个学生,如果老师还带研究生,那么研究生也可直接负责本科生。 本科生导师制问题中的数据元素具有如下形式:

⑴ 导师带研究生:

(老师,((研究生1, (本科生1, „, 本科生m )) , „ ))

⑵ 导师不带研究生:

(老师, (本科生1, „, 本科生m ))

导师的自然情况只包括姓名、职称;研究生的自然情况只包括姓名、班级;本科生的自然情况只包括姓名、班级。

2. 功能要求

要求完成以下功能:

⑴ 插入:将某位本科生或研究生插入到广义表的相应位置;

⑵ 删除:将某本科生或研究生从广义表中删除;

⑶ 查询:查询导师、本科生(研究生)的情况;

⑷ 统计:某导师带了多少个研究生和本科生;

⑸ 输出:将某导师所带学生情况输出。

3 实现要点

对广义表采用头尾表示方的存储结构,在建立广义表时,由广义表的书写形式转化头尾存储结构,还要把人员信息的书面形式转化为具体的类。

人员信息的书面形式用这样的形式:高老师-教授-0、李刚-二班-1、李明-二班-2 人员信息中的姓名、职称、班级、人员类型用“-”隔开,如:高老师-教授-0,高老师表示姓名,教师表示职称,0 表示人员的类型是教师;李刚表示姓名,二班表示班级,1 表示人员的类型是研究生;李明表示姓名,二班表示班级,2 表示人员的类型是本科生 4 类定义

为人员信息对象(存储学生、老师的姓名、班级或职称信息)建立Personnel 类,其类定义如下:

class Personnel

{

public:

Personnel(string st);

Personnel();

string GetPersonnelinfo();

int GetTag();//返回人员类型

string GetPersonnelname(); //返回人员姓名

private:

int tag; //标识人员的类型

string personnelinfo; //学生班级和教师职称

string personnelname; //人员姓名

};

在Personnel 类中,提供了如下成员函数:

(1)函数声明: Personnel(string st)

完成的功能:有参构造函数,把st 表示的信息转化为人员的相应信息

(2)函数声明: Personnel()

完成的功能: 无参构造函数,初始化人员信息

(3)函数声明: string GetPersonnelinfo()

完成的功能: 返回学生班级和教师职称信息

(4)函数声明: int GetTag()

完成的功能: 返回人员类型

(5)函数声明: string GetPersonnelname ()

完成的功能: 返回人员姓名

为广义表的节点信息建立GLNode 类,其类定义如下:

template

struct GLNode

{

int tag;

T data;

struct atom

{

GLNode *hp, *tp;

} ptr;

};

为广义表建立GLists 类,其类定义如下:

template

class GLists

{

public:

GLists();

GLists(string st);

GLists(GLists ls1, GLists ls2);

~GLists( ){delete [] ls;}

int Depth( );

GLists *Head( );

GLists *Tail( );

void Prnt();

void QueryInfo(GLNode* ls,string manname);

void StatisticInfo(GLNode* ls,string mannameg);

void StudentInfo(GLNode* ls,string mannameg);

bool DelStudent(GLNode* ls,string mannameg);

bool InsertStudent(GLNode* ls,string mannameg,string stuinfo); void Setinfo();

void Outinfo();

GLNode* Getls();

void OutStatisticinfo() ;

private:

GLNode* ls;

string stprt;

void Server(string &st,string &hst);

GLNode* Crtlists(string st);

void Ena(string str);

void Prt(GLNode* ls);

int NumberStudent;

int Numbergraduate;

bool outflag ;

};

在GLists 类中,提供了如下成员函数:

(1) 函数声明: GLists()

完成的功能:初始化为空的广义表

(2)函数声明: GLists(string st)

完成的功能: 按广义表的书面格式建立广义表的存储结构

截图

:

(3)函数声明: GLists(GLists ls1, GLists ls2)

完成的功能: 用表头ls1和表尾ls2构造广义表

(4)函数声明: ~GLists( )

完成的功能: 释放广义表中各结点的存储空间

(5)函数声明: int Depth( )

完成的功能: 求广义表的深度

(6)函数声明: GLists *Head( )

完成的功能: 求广义表的表头

(7)函数声明: GLists *Tail( )

完成的功能: 求广义表的表尾

(8)函数声明: void Prnt()

完成的功能: 将广义表显示出来

(9)函数声明: void QueryInfo(GLNode* ls,string manname)

完成的功能: 查询ls 所指的广义表中的姓名为manname 的信息

截图:

(10)函数声明: void StatisticInfo(GLNode* ls,string mannameg)

完成的功能: 统计ls 所指的广义表中的姓名为mannameg 的老师所带的学生人数

截图:

(11) 函数声明: void StudentInfo(GLNode* ls,string mannameg)

完成的功能: 显示ls 所指的广义表中的姓名为manname 的老师所带的学生

截图:

(12)函数声明: bool DelStudent(GLNode* ls,string mannameg)

完成的功能: 删除ls 所指的广义表中的姓名为mannameg 的学生

截图:

(13)函数声明:bool InsertStudent(GLNode* ls,string mannameg,string stuinfo)

完成的功能: 把学生信息为stuinfo 的学生插入到ls 所指的广义表中的姓名为

mannameg 的后边

截图:

(14)函数声明: void Setinfo()

完成的功能: 初始化广义表的信息

(15)函数声明: void Outinfo()

完成的功能: 输出广义表的信息

(16) 函数声明: GLNode* Getls()

完成的功能: 输出广义表的ls 成员

(17)函数声明: void OutStatisticinfo()

完成的功能: 显示统计姓名为manname 的老师所带的学生人数的信息

(18)函数声明: void Server(string &st,string &hst)

完成的功能: 从st 中取出第一成员存入到hst ,其余的成员留在st 中

(19)函数声明: GLNode* Crtlists(string st)

完成的功能: 把广义表的书面格式st 转化为广义表的头尾存储结构

(20)函数声明: void Ena(string str)

完成的功能: 把str 表示信息存储到stprt 中,已备以后显示

(21)函数声明: void Prt(GLNode* ls)

完成的功能: 将ls 所指的广义表显示出来


相关内容

  • 网络安全研究报告
  • 未雨时绸缪,防患于未然 --网络安全行业研究报告 网络安全行业研究报告2016.9 报告摘要 网络安全重要性不断凸显,包含云安全的行业规模有望达数千亿 •数量不断增长的数据中蕴含丰富信息,一旦泄露将造成严重后果.而目前 我国网络安全形势较为严峻,亟需优秀的网络安全产品保障信息安全.•随着云计算从概念 ...

  • 以广义财务管理理论分析宏观环境和财务决策的关系
  • [摘 要]在财务管理理论中,企业的财务决策是其最为重要的研究内容之一.广义财务管理理论视角下,企业的财务决策不仅会受到企业内部因素的影响,还会受到政治环境.法律环境.经济环境.文化环境与技术环境等宏观环境的影响.基于宏观环境与财务决策的关系,我国广义的财务管理理论研究应加强对宏观环境影响机制的研究, ...

  • 偏心荷载作用下多桩承台桩反力的计算_任彧
  • 第38卷第4期建 筑 结 构2008年4月 偏心荷载作用下多桩承台桩反力的计算 任 (福建省建筑设计研究院, 福州350001) [摘要] 算例表明, <建筑桩基技术规范>(JGJ94-94) 式5. 1. 1-2计算偏心竖向力作用下群桩中各桩竖向力仅对桩群坐标轴为形心主轴时成立.在规范 ...

  • 向量相似度测度方法
  • I,)1( 第28卷第4期2009年8月 声学技术 TechnicalAcoustics V01.28,NO.4 Aug.,2009 向量相似度测度方法 张宇,刘雨东,计钊 (中国船舶重工集团公司第七六.研究所,大连116013) 摘要:判断阿个向量的相似程度,一般采用计算相似度的方法.首先对相似度 ...

  • 城市交通发展的优化模型与政策研究
  • 城市交通发展的优化模型与政策研究 (张媛 吕慧洁 谢莉娟 同济大学数学系理科班) 摘要:本文就公交财政补贴.限制私家车发展.公交轨交分担率三个城市交通发展的优化问题建立了数学模型,在补贴.扩路.收费.征税等政策背景和博弈理论.成本理论等经济学背景下,以上海市道路交通的相关数据为基础,根据相关模型刻画 ...

  • 柯氏五层模型和熵权法
  • 1. 需求层评估 这一部分的评估是柯氏评估模型所缺少的.需求层评估是"国培计划"项目实施前对所制定的方案或规划的评估.应该说,培训方案设计与规划是一个培训的开端,其制定的合理性直接影响着培训质量.同时,满足参训教师与学校的培训需求才是实施"国培计划"的直接目的 ...

  • 注册岩土工程师基础考试部分
  • 基础部分 一.高等数学 1.1空间解析几何向量代数直线平面旋转曲面二次曲面空间曲线 1.2微分学极限连续导数微分偏导数全微分导数与微分的应用 1.3积分学不定积分定积分广义积分二重积分三重积分平面曲线积分积分应用 1.4无穷级数数项级数不清幂级数泰勒级数傅立叶级数 1.5常微分方程可分离变量方程一阶 ...

  • 模型参考自适应控制
  • 第九章 模型参考自适应控制(Model Reference Adaptive Control )简称MRAC 介绍另一类比较成功的自适应控制系统,已有较完整的设计理论和丰富的应用成果(驾驶仪.航天.电传动.核反应堆等等). §9-1MRAC 的基本概念 系统包含一个参考模型,模型动态表征了对系统动态 ...

  • 间歇式反应釜的温度预测控制
  • 第29卷第6期2007年12月 沈 阳 工 业 大 学 学 报Journal of Shenyang University of Technology Vol 29No 6Dec. 2007 文章编号:1000-1646(2007)06-0716-05 间歇式反应釜的温度预测控制 丁惜瀛, 崔紫微, ...