- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构
课程设计实习报告
题目: 拓扑排序 班级: 学号: 姓名: 2008年6月23日至6月27日
实习报告
[题目] 拓扑排序。
建立有向无环图,并输出拓扑的序列。
[基本要求] 输入顶点数和边,输出图的拓扑的序列。 一.问题分析及任务定义
对一个有向无环图 Directed Acyclic Graph简称DAG G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若 u,v ∈E G ,则u在线性序列中出现在v之前。
通常,这样的线性序列称为满足拓扑次序 TopoiSicai Order 的序列,简称拓扑序列。
拓扑排序演示:
注意:
①若将图中顶点按拓扑次序排成一行,则图中所有的有向边均是从左指向右的。
②若图中存在有向环,则不可能使顶点满足拓扑次序。
③一个DAG的拓扑序列通常表示某种方案切实可行。
【例】一本书的作者将书本中的各章节学习作为顶点,各章节的先学后修关系作为边,构成一个有向图。按有向图的拓扑次序安排章节,才能保证读者在学习某章节时,其预备知识已在前面的章节里介绍过。
④一个DAG可能有多个拓扑序列。
【例】对图G9进行拓扑排序,至少可得到如下的两个 实际远不止两个 拓扑序列:C0,C1,C2,C4,C3,C5,C7,
C8,C6和C0,C7,C9,C1,C4,C2,C3,C6,C5。
⑤当有向图中存在有向环时,拓扑序列不存在
【例】下面 a 图中的有向环重排后如 b 所示,有向边 v3,vl 和其它边反向。若有向图被用来表示某项工程实施方案或某项工作计划,则找不到该图的拓扑序列 即含有向环 ,就意味着该方案或计划是不可行的。
二.概要设计和数据结构选择
(1)存储结构:采用链接表来存储图中的各条边的关系,链接表采用结点和链接点,其结构体分别如下所示:
typedef struct edgenode //邻接点 int adjvex;//邻接点的序号 struct edgenode *next;
Vertex;
typedef struct //结点 int data; //结点的入度 Vertex *link;
Adjlist;
Typedef struct Adjlist vertices[MAXVEX];//邻接表表中结点数组定义
int vexnum,edgenum;//vexnum表示顶点数,edgenum表示边数
ALGraph;
定义各个结点:
typedef struct vexnode adjlist[MAXVEX];
建立邻接表
例如一个有向图的结构为:
其邻接表的形式如下:
第一列的数为各顶点的原始度数。
(2)主要算法基本思想。
输出拓扑序列:先输出入度为0的顶点,再改变其他顶点的入度;循环以上步骤。
具体实现方法:初始r为0(r为每次对全部结点搜索后度数为0的结点个数),对邻接表的各结点进行搜索,当结点的入度不为0,使r加1;当结点的入度为0,使此结点的度数减1,输出此结点的值,m加1(m为输出顶点的个数),再把此结点的各个邻接点的入度减1。接着按上面的步骤一样进行,直到r n,即结点的入度都不为0。最后如果m n,即输出的个数少于顶点数则说明网中有环。
(3 设计表示法 1 函数调用关系如图所示。 2 函数接口说明。
(1.void LianJieBiao adjlist g,int n,int e
/*建立顶点的链接表,先初始化各结点的度数为0,尾为空,再提示输入相关的一条边的两个顶点,要是输入的数字有误提示重新输入,把这条边的终点的结点的度数加1,再把这条边的终点的结点链结到起点上,重复操作。最后打印输出各顶点的起始度数。*/
(2.void BianLi adjlist g,int n
/*通过已建立的链接表来遍历图,利用for 语句把每个结点的链结点打印输出,以此来遍历图,每行最后用^表示结束。*/
(3. void TuoPuPaiXv adjlist adj,int n
/*输出拓扑排序的结果, 具体实现方法:初始r为0(r为每次对全部结点搜索后度数为0的结点个数),对链接表的各结点进行搜索,当结点的入度不为0,使r加1;当结点的入度为0,使此结点的度数减1,输出此结点的值,m加1(m为输出顶点的个数),再把此结点的各个链接点的入度减1。接着按上面的步骤一样进行,直到r n,即结点的入度都不为0。最后如果m n,即输出的个数少于顶点数则说明网中有环。*/
(4.main
/*先输入结点数和边数,接着依次调用LianJieBiao adjlist g,int n,int e ,BianLi adjlist g,int n ,TuoPuPaiXv adjlist adj,int
您可能关注的文档
最近下载
- 血糖仪质控规则 .pdf VIP
- 中国矿业大学《学术英语》2021-2022学年第一学期期末试卷.doc VIP
- 2025年南京新工投资集团公司治理结构组织架构和部门职能.docx
- 组织胚胎学教学教案.doc VIP
- 2025年石家庄建设投资集团有限责任公司人员招聘笔试备考试题及答案解析.docx VIP
- 九年级英语感叹句.ppt VIP
- 第3单元第7课+中国传统色(课件)-2025-2026学年+赣美版(2024)初中美术八年级上册.pptx VIP
- Unit 6 How do you feel Part B 课件(共20张PPT)(含音频+视频).pptx VIP
- 拟任县处级党政领导职务政治理论水平任职资格考试第.doc VIP
- 《我们的互联网时代》知识梳理+考点精练(一)(原卷版).docx VIP
原创力文档


文档评论(0)