数据结构设计:有向图拓扑排序算法的实现程序.docx

数据结构设计:有向图拓扑排序算法的实现程序.docx

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课程设计设计说明书有向图拓扑排序算法的实现学生姓名樊佳佳学号1318064017班级网络工程1301成绩指导教师申静数学与计算机科学学院2016年1月4日课程设计任务书 2015—2016学年第一学期课程设计名称:数据结构课程设计课程设计题目:图的拓扑排序算法的实现完成期限:自 2015年 12月20日至 2016年 1 月 3 日共 2 周设计内容:1、设计任务(1)给出一个有向无环图,遍历所有的节点;(2)能够实现对所有顶点的拓扑;(3)界面友好,可操作性强。2、需求分析对系统的功能及性能要求进行分析,写出需求规格说明书(可行性分析报告、系统的分层DFD图)。3、软件设计软件设计分两个阶段进行:总体设计和详细设计;总体设计:确定系统总体设计方案,完成系统的模块结构图及模块的功能说明;详细设计:对模块内部过程及数据结构进行设计,以及进行数据库设计、用户界面设计等编写出该项目的详细设计报告;4、具体编码编写程序,要求给出详细的注释,包括:模块名、模块功能、中间过程的功能、变量说明等。同时编写用户使用手册、程序模块说明等文档;5、软件测试所有测试过程要求采用综合测试策略:先作静态分析,再作动态测试。应事先制订测试计划,并要求保留所有测试用例,完成测试报告。指导教师:申静教研室负责人:申静课程设计评阅评语:指导教师签名:年月日摘要设计了一个对有向图进行拓扑排序的算法,该算法首先用邻接表构造有向图的存储结构,然后对此有向图进行拓扑排序,输出拓扑排序的结果。用VC++作为软件开发环境,以邻接表作为图的存储结构,将图中所有顶点排成一个线性序列,输出拓扑排序结果。拓扑排序常用来确定一个依赖关系集中,事物发生的顺序。拓扑排序是对有向无环图的顶点的一种排序,它使得如果存在一条从顶点A到顶点B的路径,那么在排序中B出现在A的后面。关键词:邻接表;有向无环图;拓扑排序目录1 课题描述12 问题分析和任务定义23 逻辑设计33.1程序模块功能图33.2 抽象数据类型34 详细设计44.1 C语言定义的相关数据类型44.2 主要模块的伪码算法44.2.1主函数伪码算法44.2.2邻接表伪码算法44.2.3拓扑排序的伪码算法:54.3 主函数流程图65 程序编码76 程序调试与测试137 结果分析168 总结17参考文献181 课题描述根根据设计要求运用C语言程序设计了一个对有向图进行拓扑排序的算法,该算法首先用邻接表构造有向图的存储结构,然后对此有向图进行拓扑排序,输出拓扑排序的结果。如给定一个有向无环图如图1.1所示。在此图中,从入度为0的顶点出发,删除此顶点和所有以它为尾的弧;重复直至全部顶点均已输出;或者当图中不存在无前驱的顶点为止。图1.1 有向无环图开发工具:Visual C++ 6.02 问题分析和任务定义对一个有向无环图G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对由某个集合上的一个偏序得到该集合上的一个全序,这个操作就称之为拓扑排序。偏序集合中仅有部分成员之间颗比较,而全序指集合中全体成员之间均可比较,而由偏序定义得到拓扑有序的操作便是拓扑排序。一个表示偏序的有向图可用来表示一个流程图,通过抽象出来就是AOV-网,若从顶点i到顶点j有一条有向路径,则i是j的前驱,j是i的后继。若(i,j)是一条弧,则i是j的直接前驱;j是i的直接后继。在AOV-网中,不应该出现有向环,用拓扑排序就可以判断网中是否有环,若网中所有顶点都在它的拓扑有序序列中,则该AOV-网必定不存在环。3 逻辑设计3.1程序模块功能图图3.1程序模块功能图3.2 抽象数据类型ADT ALGraph{数据对象:D={V|V是具有相同特性的数据元素的集合,即顶点集}数据关系:R={v,w|v,w∈V,v,w表示顶点v到顶点w的弧}基本操作P:CreatGraphlist(ALGraph *G)初始条件:成对输入顶点集V中的点。操作结果:构造图G的邻接表。FindInDegree(ALGraph G, intindegree[])初始条件:图G的邻接表中存在结点V。操作结果:找到图中入度为0结点。Initgraph()操作结果:完成图形初始化。TopologicalSort(ALGraph G)初始条件:构造的有向图G已初始化。操作结果:对于有向图G根据邻接存储表进行拓扑排序。}4 详细设计4.1 C语言定义的相关数据类型#define max_vextex_num 20 /*宏定义最大顶点个数*/ #define stack_init_size 100 /*宏定义栈的存储空间大小*/typedefintElemType;typedefstructVNode /*邻接表头结点的类型*/{int data; /*顶点信息,数据域*/}VN

文档评论(0)

502992 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档