1、 一、课程设计目的一、课程设计目的 本课程设计的目标就是要达到理论与实际应用相结合,提高学生组织数据本课程设计的目标就是要达到理论与实际应用相结合,提高学生组织数据 及编写大型程序的能力,并培养基本的、良好的程序设计技能以及合作能力。及编写大型程序的能力,并培养基本的、良好的程序设计技能以及合作能力。 设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的、规设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的、规 模较大的问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理模较大的问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理 解、牢固掌握数据结构和算法设
2、计技术,掌握分析、解决实际问题的能力。解、牢固掌握数据结构和算法设计技术,掌握分析、解决实际问题的能力。 通过这次设计,要求在数据结构的逻辑特性和物理表示、数据结构的选择和应通过这次设计,要求在数据结构的逻辑特性和物理表示、数据结构的选择和应 用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序 设计方法以及上机操作等设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训基本技能和科学作风方面受到比较系统和严格的训 练。练。 二、课程设计内容二、课程设计内容 问题描述问题描述 针对计算机系本科课程,
3、依据其相互依赖关系制定课程安排计划,其相互依赖针对计算机系本科课程,依据其相互依赖关系制定课程安排计划,其相互依赖 关系如下图所示,并要求各学期课程数目大致相同且搭配适当。关系如下图所示,并要求各学期课程数目大致相同且搭配适当。 基本要求基本要求 (1)求解上图的拓扑排序结果。)求解上图的拓扑排序结果。 (2)上述课程在)上述课程在 4 学期上完,要求每学期上课的门数大致一样。学期上完,要求每学期上课的门数大致一样。 实现提示实现提示 在拓扑排序基础上作适在拓扑排序基础上作适当修改。当修改。 三、课程设计过程三、课程设计过程 1需求分析需求分析 根据课程之间的依赖关系制定课程安排计划,输入课程
4、数及课程之间的关系,需要利根据课程之间的依赖关系制定课程安排计划,输入课程数及课程之间的关系,需要利 用代码实现排序,以及对各个学期安排进行排序和输出。用代码实现排序,以及对各个学期安排进行排序和输出。 2概要设计概要设计 首先利用拓扑排序对课程先后顺序首先利用拓扑排序对课程先后顺序进行分析,邻接表为主要存储结构,对课程进行拓扑进行分析,邻接表为主要存储结构,对课程进行拓扑 排序。排序。 为了实现上述程序功能,需要定义邻接表表的抽象数据类型为了实现上述程序功能,需要定义邻接表表的抽象数据类型: #include“stdio.h“/#include“stdio.h“/输入输出输入输出 #incl
5、ude“stdlib.h“/#include“stdlib.h“/标准库标准库 #define max_vertax_num 20/#define max_vertax_num 20/表结点表结点 typedef strtypedef struct node uct node int adjvex;int adjvex; struct node *next;struct node *next; nodetype;/nodetype;/表头结点表头结点 typedef struct frontnode typedef struct frontnode int data;int data; int
6、 d;int d; struct node *next;struct node *next; frontnodetype,adjlistmax_vertax_num; frontnodetype,adjlistmax_vertax_num; 3详细设计详细设计 实现概要设计中定义的所有的数据类型,对每个操作给出伪码算法。对主程序实现概要设计中定义的所有的数据类型,对每个操作给出伪码算法。对主程序 和其他模块也都需要写出伪码算法。和其他模块也都需要写出伪码算法。 Status CreateGraph(ALGraph *G) Status CreateGraph(ALGraph *G) (伪码算法)(伪码算法) int LocateVex(ALGraph G,VertexType u)int LocateVex(ALGraph G,VertexType u) (伪码算法)(伪码算法) void Display(ALGraph G)void Display(ALGraph G)