c语言课程设计-拓补排序.doc
文本预览下载声明
荆楚理工学院
课程设计成果
学院:_____ ______ 班 级:
学生姓名: 学 号:
设计地点(单位)______________ ____________设计题目:_______________________________________
完成日期: 年 月 日
成绩(五级记分制):______ __________
教师签名:__________ _______________
指导教师评语: _______________________________________
_________________________________________________________________________________________________________________________________________________________________________________________________________ __________ _
荆楚理工学院课程设计任务书
设计题目:
学生姓名 课程名称 专业班级 地 点 起止时间 设计内容及要求
设计
参数
进度
要求
参考资料
其它 说明 .本表应在每次实施前一周由负责教师填写二份,教研室审批后交学院院备案,一份由负责教师留用。.若填写内容较多可另纸附后。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.
显示全部