文档详情

c语言课程设计-拓补排序.doc

发布:2017-06-24约字共28页下载文档
文本预览下载声明
荆楚理工学院 课程设计成果 学院:_____ ______ 班 级: 学生姓名: 学 号: 设计地点(单位)______________ ____________ 设计题目:_______________________________________ 完成日期: 年 月 日 成绩(五级记分制):______ __________ 教师签名:__________ _______________ 指导教师评语: _______________________________________ _________________________________________________________________________________________________________________________________________________________________________________________________________ __________ _ 荆楚理工学院课程设计任务书 设计题目: 学生姓名 课程名称 专业班级 地 点 起止时间 设计内容及要求 设计 参数 进度 要求 参考资料 其它 说明 .本表应在每次实施前一周由负责教师填写二份,教研室审批后交学院院备案,一份由负责教师留用。.若填写内容较多可另纸附后。3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。 教研室主任:指导教师: 年 月 日1 问题描述 1 2 基本要求 1 3 算法思想 1 4 数据结构 2 4.1链式队列的存储类型为 2 4.2图的类型(邻接表存储结构)为 2 5 模块划分 2 5.1链式队列操作 2 5.2有向图(DAG)邻接表存储结构(ALG)的操作 3 5.3拓扑排序及拓扑检测算法 3 5.4主函数 4 6 测试数据 4 6.1对“建立有向图并输出”的测试 4 6.2对“建立有向图并求一个拓扑排序序列”的测试 4 6.3对“检测用户输入的课程安排”的测试 4 7 测试情况 5 7.1对“建立有向图并输出”的测试 5 7.2对“建立有向图并求一个拓扑排序序列”的测试 7 7.3对“检测用户输入的课程安排”的测试 8 8 系统开发所用到的技术 11 参考文献 13 附录 全部代码 14 1 问题描述 在AOV网中为了更好地完成工程,必须满足活动之间先后关系,需要将各活动排一个先后次序即为拓扑排序。拓扑排序可以应用于教学计划的安排,根据课程之间的依赖关系,制定课程安排计划。按照用户输入的课程数,课程间的先后关系数目以及课程间两两间的先后关系,程序执行后会给出符合拓扑排序的课程安排计划。1、选择合适的存储结构,建立有向无环图,并输出该图 2、实现拓扑排序算法 3、运用拓扑排序实现对教学计划安排的检验 算法思想 1、 2、拓扑排序算法void TopologicalSort(ALGraph G) 中,先输出入度为零的顶点,而后输出新的入度为零的顶点,此操作可利用栈或队列实现。考虑到教学计划安排的实际情况,一般先学基础课(入度为零),再学专业课(入度不为零),与队列先进先出的特点相符,故采用队列实现。 3、拓扑排序算法void TopologicalSort(ALGraph G),大体思想为: 1)遍历有向图各顶点的入度,将所有入度为零的顶点入队列; 2)队列非空时,输出一个顶点,并对输出的顶点数计数; 3)该顶点的所有邻接点入度减一,若减一后入度为零则入队列; 4)重复2)、3),直到队列为空,若输出的顶点数与图的顶点数相等则该图可拓扑排序,否则图中有环。 4、要对教学计划安排进行检验,因此编写了检测用户输入的课程序列是否是拓扑序列的算法void TopSortCheck(ALGraph G),大体思想为: 1)用户输入待检测的课程序列,将其存入数组; 2)检查课程序列下一个元素是否是图中的顶点(课程),是则执行3),否则输出“课程XX不存在”并跳出; 3)判断该顶点的入度是否为零,是则执行4),否则输出“入度不为零”并跳出; 4)该顶点的所有邻接点入度减一; 5)重复2)、3)、4)直到课程序列中所有元素均被遍历,则该序列是拓扑序列,否则不是拓扑序列。 数据结构 4.
显示全部
相似文档