- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构求有向图的所有简单回路
课 程 设 计 报 告
课程设计名称:数据结构课程设计
课程设计题目:求有向图的所有简单回路
院(系):计算机学院
专 业:计算机科学与技术(嵌入式方向)
班 级:
学 号:
姓 名:
指导教师:
目 录
沈阳航空航天大学 I
1 总体设计 1
1.1 课设要求 1
1.2 设计原理 1
2 详细设计 2
2.1 算法与程序的设计与实现 2
2.1.1算法描述 2
2.1.2数据结构设计及用法说明 3
2.2 流程图的设计与实现 5
3 核心数据结构函数的描述 7
3.1 建立邻接表的函数 7
3.2 深度优先遍历函数 9
4 程序测试及结果分析 11
4.1 程序测试及结果 11
参考文献 14
附 录(关键部分程序清单) 15
1 总体设计
1.1 课设要求
以合适方便的方式输入一个有向图,并在内部建立有向图的邻接表储存结构,有邻接表的形式储存有向图。然后根据有向图的储存结构,求出该有向图中所有的简单回路。输入有向图的方式简单方便,能形象方便的观察有向图的顶点名称,相关弧的关系。
要求如下:
(1)熟悉图的邻接表储存结构及操作方式;
(2)熟悉求简单回路的算法(利用深度优先遍历);
(3)熟悉运用开发环境,基于VC++6.0的软件开发环境;
(4)完成课程设计基本任务的设计及编码;
(5)熟练掌握VC++6.0上的基本的调试方法。
1.2 设计原理
根据所学的知识,在利用邻接表时需要做三个工作:定义表结点类型;定义头结点类型;定义邻接表类型。再对储存的图进行深度优先遍历,并将遍历过的点进行标记,放入数组储存,当发现有被标记的点出现时则表示出现重复的顶点,为找到回路,打印出有向图的回路。
2 详细设计
2.1 算法与程序的设计与实现
在得到该课程设计任务书时,在对求有向图的所有简单回路的算法知识做了简单的回顾与学习。首先是邻接表储存有向图,由于有向边没有权值,所有在建立有向图的邻接表的时候去除了有关弧的信息。其次才用深度优先遍历的算法遍历有向图中所有的顶点,在遍历有向图时,对图中每个顶点至多调用一次DFS函数,因为一旦某个顶点被标记成为已被访问,就不再从它出发进行搜索了。因此,遍历有向图的过程实质上是对每个顶点查找其邻接点的过程。
2.1.1算法描述
(1)邻接表:邻接表是图的一种链式存储结构。在邻接表中,对图中每个顶点建立一个单链表,第i个单链表中的接点表示依附于顶点Vi的边(对有向图是以顶点Vi为尾的弧)。每个结点由3个域组成,其中邻接点域(adjvex)指示与顶点Vi邻接的点在图中的位置,链域(nextare)指示下一条边或弧的结点;数据域(info)储存和边或弧相关的信息,如权值等。每个链表上附设一个表头结点。在表头结点中,除了设有链域(firstarc)指向链表中第一个结点之外,还设有储存顶点Vi的名或其它有关信息的数据域(data)。如下图所示:
adjvex nextarc info 图2.1.1 表结点
data firstarc 图2.1.2 头结点
(2)深度优先遍历:设x是当前被访问顶点,在对x做过访问标记后,选择一条从x出发的未检测过的边(x,y)。若发现顶点y已访问过,则重新选择另一条从x出发的未检测过的边,否则沿边(x,y)到达未曾访问过的y,对y访问并将其标记为已访问过;然后从y开始搜索,直到搜索完从y出发的所有路径,即访问完所有从y出发可达的顶点之后,才回溯到顶点x,并且再选择一条从x出发的未检测过的边。上述过程直至从x出发的所有边都已检测过为止。此时,若x不是源点,则回溯到在x之前被访问过的顶点;否则图中所有和源点有路径相通的顶点(即从源点可达的所有顶点)都已被访问过,若图G是连通图,则遍历过程结束,否则继续选择一个尚未被访问的顶点作为新源点,进行新的搜索过程。首先访问出发点v,并将其标记为已访问过;然后依次从v出发搜索v的每个邻接点w。若w未曾访问过,则以w为新的出发点继续进行深度优先遍历,直至图中所有和源点v有路径相通的顶点(称为从源点可达的顶点)均已被访问为止。.1.2数据结构设计及用法说明
(1)邻接表的形式说明及其建表算//边表结点Typedef struct ArcNode{
int adjvex;//邻接点域
struct node *next //链域
//若要表示边上的权,则应增加一个数据域
};
//顶点表结点
typedef struct vnode{
VertexType //顶点域
EdgeNode*firstarc;//指向第一条依附该顶点的弧的指针
}VertexNode;
//AdjList是邻接表类型
typedef V
您可能关注的文档
最近下载
- 企业工会助推企业高质量发展.docx VIP
- 斜井压力钢管安装工法实操指南.docx
- 河北省唐山市路北区2023-2024学年七年级上学期11月期中语文试题(含答案).pdf VIP
- 2025年公安辅警综合基础知识题库及答案解析.docx VIP
- 十年(2016-2025)高考数学真题分类汇编(全国通用)-专题10 数列解答题综合一(等差、等比通项公式及数列求和,46题).docx VIP
- 标准图集-06D401-1 吊车供电线路安装.pdf
- 王正龙先生的灸法直论.doc VIP
- 【各类建筑及案例分析】快题课-05 泡泡图 图书馆类建筑 DaveChen.ppt VIP
- 【各类建筑及案例分析】快题课-07 泡泡图 文化馆类建筑 davechen.ppt VIP
- 【各类建筑及案例分析】快题课-03 泡泡图 旅馆类建筑 DaveChen.ppt VIP
文档评论(0)