- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
最近下载
- 物理学科知识与教学能力高中.pdf VIP
- 储能电气安装项目划分(1).doc VIP
- 苏科版(2024)八年级物理上册教学课件:跨学科实践——乐器的调查与制作.pptx VIP
- 2025年全国招标采购专业技能大赛(地方组)经典试题及答案.docx
- 200MWh储能电站安全预评价报告.doc VIP
- 2024广播电视播音员主持人真题含答案详解【达标题】.docx VIP
- 2025年秋新人教版2年级上册数学全册教学课件.pptx
- 中国古代文学史2课件精讲9-10.pdf VIP
- 在新时代继承和弘扬伟大抗战精神PPT抗战胜利80周年党课课件.pptx VIP
- 城市电力网规划设计导则.pptx VIP
文档评论(0)