C语言课程设计 拓补排序文档格式.docx
- 文档编号:13683987
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:26
- 大小:124.20KB
C语言课程设计 拓补排序文档格式.docx
《C语言课程设计 拓补排序文档格式.docx》由会员分享,可在线阅读,更多相关《C语言课程设计 拓补排序文档格式.docx(26页珍藏版)》请在冰豆网上搜索。
完成日期:
2014年12月28日
成绩(五级记分制):
________________
教师签名:
_________________________
指导教师评语:
_______________________________________
____________________________________________________________________________________________________________________________________________________________________________________________________________________
荆楚理工学院课程设计任务书
设计题目:
拓扑排序
学生姓名
XXX
课程名称
数据结构程序设计
班业级专
点地
XX
起止时间
2014.12.25-2015.1.9
设计内容及要求
问题描述:
编写函数实现图的拓扑排序。
设计
参数
进度
要求
两个星期内完成。
参考资料
[1]李素若,陈万华等编著.数据结构.北京:
中国水利水电出版社,2014.7.北京:
中国水数据结构习题解答及上机指导.[2]李素若,琚辉,严永松编著.,2014.9.
利水电出版社2006.
北京:
清华大学出版社,面向对象程序设计.[3]谭浩强.C++
其它
说明
1.本表应在每次实施前一周由负责教师填写二份,教研室审批后交学院院备案,一份由负责教师留用。
2.若填写内容较多可另纸附后。
3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。
教研室主任:
指导教师:
2015年1月9日
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网中为了更好地完成工程,必须满足活动之间先后关系,需要将各活动排一个先后次序即为拓扑排序。
拓扑排序可以应用于教学计划的安排,根据课程之间的依赖关系,制定课程安排计划。
按照用户输入的课程数,课程间的先后关系数目以及课程间两两间的先后关系,程序执行后会给出符合拓扑排序的课程安排计划。
2基本要求
1、选择合适的存储结构,建立有向无环图,并输出该图;
2、实现拓扑排序算法;
3、运用拓扑排序实现对教学计划安排的检验。
3算法思想
1、采用邻接表存储结构实现有向图;
有向图需通过顶点数、弧数、顶点以及弧等信息建立。
2、拓扑排序算法voidTopologicalSort(ALGraphG)中,先输出入度为零的顶点,而后输出新的入度为零的顶点,此操作可利用栈或队列实现。
考虑到教学计划安排的实际情况,一般先学基础课(入度为零),再学专业课(入度不为零),与队列先进先出的特点相符,故采用队列实现。
3、拓扑排序算法voidTopologicalSort(ALGraphG),大体思想为:
1)遍历有向图各顶点的入度,将所有入度为零的顶点入队列;
2)队列非空时,输出一个顶点,并对输出的顶点数计数;
3)该顶点的所有邻接点入度减一,若减一后入度为零则入队列;
4)重复2)、3),直到队列为空,若输出的顶点数与图的顶点数相等则该图可拓扑排序,否则图中有环。
4、要对教学计划安排进行检验,因此编写了检测用户输入的课程序列是否是拓扑序列的算法voidTopSortCheck(ALGraphG),大体思想为:
1)用户输入待检测的课程序列,将其存入数组;
2)检查课程序列下一个元素是否是图中的顶点(课程),是则执行3),否则输出“课程XX不存在”并跳出;
3)判断该顶点的入度是否为零,是则执行4),否则输出“入度不为零”并跳出;
4)该顶点的所有邻接点入度减一;
5)重复2)、3)、4)直到课程序列中所有元素均被遍历,则该序列是拓扑序列,否则不是拓扑序列。
1
4数据结构
4.1链式队列的存储类型为
typedefintElemType;
typedefstructQNode
{ElemTypedata;
structQNode*next;
}QNode,*QueuePtr;
typedefstruct
{QueuePtrfront;
QueuePtrrear;
}LinkQueue;
4.2图的类型(邻接表存储结构)为
typedefcharVertexType[20];
//顶点信息(名称)
typedefstructArcNode//链表结点
{intvexpos;
//该弧所指向的顶点在数组中的位置
structArcNode*next;
//指向当前起点的下一条弧的指针
}ArcNode;
typedefstructVNode//头结点
{VertexTypename;
intindegree;
//顶点入度
ArcNode*firstarc;
//指向当前顶点的第一条弧的指针
}VNode,AdjList[MAX_VERTEX_NUM];
{AdjListvexhead;
//邻接表头结点数组
intvexnum,arcnum
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言课程设计 拓补排序 语言 课程设计 排序