数据结构算法实验9图的拓扑排序问题附源代码.doc

数据结构算法实验9图的拓扑排序问题附源代码.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
浙江大学城市学院实验报告 课程名称 数据结构与算法 实验项目名称 实验九 图的拓扑排序问题 实验成绩 指导老师(签名 ) 日期 实验目的和要求 掌握拓扑排序概念。 理解并能实现拓扑排序算法(采用邻接表表示图)。 二. 实验内容 编写用邻接表表示有向无权图时图的基本操作的实现函数,包括: ① 初始化用邻接表表示的有向无权图 void InitAdjoin(adjlist G); ② 建立用邻接表表示的有向无权图 void CreateAdjoin (adjlist G, int n) (即通过输入图的每条边建立图的邻接表); ③ 输出用邻接表表示的有向无权图void PrintAdjoin (adjlist G, int n) (即输出图的每条边)。 把邻接表的结构定义及这些基本操作实现函数存放在头文件Graph3.h中 编写拓扑排序算法 void Toposort( adjlist G, int n) (输入为图的邻接表,输出为相应的拓扑序列)。 编写测试程序(即主函数),首先建立并输出有向无权图,然后进行拓扑排序。 要求: 把拓扑排序函数Toposort以及主函数存放在文件test9_3.cpp中。 填写实验报告,实验报告文件取名为report9.doc。 上传实验报告文件report9.doc与源程序文件test9_3.cpp及Graph3.h到Ftp服务器上自己的文件夹下。 struct EdgeNode{ //链表边结点,表示弧 int adjvex; //存放与头结点顶点有关的另一个顶点在邻接表(数组)中的下标。 EdgeNode *next; //指向链表下一个结点 }; typedef struct VNode{ //邻接表,表示顶点 int data; // 顶点数据,顶点名称 EdgeNode *firstarc; // 指向边结点链表第一个结点 } adjlist[MaxVertexNum]; 【函数说明】 ① void InitAdjoin(adjlist G) 功能:初始化用邻接表表示的有向无权图 思路:将邻接表的所有顶点置为-1,边结点链表指针置为NULL ② void CreateAdjoin (adjlist G, int n) 功能:建立用邻接表表示的有向无权图(即通过输入图的每条边建立图的邻接表)思路:按照输入的顶点信息,新建边结点链入邻接表中对应位置 ③ void PrintAdjoin (adjlist G, int n) 功能:输出用邻接表表示的有向无权图(即输出图的每条边) 思路:按照一定的格式输出邻接表 ④ void Toposort( adjlist G, int n) 功能:输入图的邻接表,输出相应的拓扑序列 思路:初始化数组 d[ ],利用数组的空间建立入度为零的顶点栈并设置栈顶指针。当入度为零的顶点栈不空时,重复执行以下步骤:从顶点栈中退出一个顶点, 并输出之;将该顶点的出边邻接点入度减一,如果出边邻接点入度减至0, 则该顶点入栈,更新栈顶指针。完成整个循环后,判断输出的顶点个数是否少于邻接表的顶点个数,如果少于则说明存在回路,打印输出信息。 四. 实验结果与分析 包括运行结果截图等 【测试数据】 顶点数:6 输入弧的信息: 尾顶点 头顶点 0 2 1 2 1 3 1 4 2 3 2 5 3 5 4 5 正确的邻接表应为: (程序给出的结果与拓扑排序结果一并显示在本部分末尾) 下面给出了拓扑排序函数实现过程中d[]数组的一系列状态。状态记录点共有三种:循环开始前、top指针改变时、一次循环结束后: 【1】循环开始前 -1 0 2 2 1 3 【2】top改变 -1 0 2 2 0 3 【3】一次循环结束 -1 0 1 1 0 3 【4】一次循环结束 -1 0 1 1 0 2 【5】top改变 -1 0 2 2 1 3 【6】一次循环结束 -1 0 -1 1 0 2 【7】top改变 -1 0 -1 -1 0 -1 【8】一次循环结束 -1 0 -1 -1 0 -1 【9】top改变 -1 0 -1 -1 0 -1 【10】一次循环结束 -1 0 -1 -1 0 -1 【11】最后一次循环结束 -1 0

文档评论(0)

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

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

1亿VIP精品文档

相关文档