1 / 23
文档名称:

图的深度广度遍历算法与数据结构专业课程设计.doc

格式:doc   大小:509KB   页数:23页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

图的深度广度遍历算法与数据结构专业课程设计.doc

上传人:读书百遍 2021/12/11 文件大小:509 KB

下载得到文件列表

图的深度广度遍历算法与数据结构专业课程设计.doc

文档介绍

文档介绍:图操作
一、问题描述
图是一种较线性表和树更为复杂数据构造。在图形构造中,节点间关系可以是任意,图中任意两个数据元素之间都可以有关。由此,图应用极为广泛。当前邻接矩阵和邻接表存储构造下,完毕图深度、广度遍历。
二、基本规定
1、选取适当存储构造完毕图建立;
2、建立图邻接矩阵,能按矩阵方式输出图,并在此基本上,完毕图深度和广度遍历,输出遍历序列;
3、建立图邻接表,并在此基本上,完毕图深度和广度遍历,输出遍历序列;
三、测试数据
四、算法思想
1、邻接矩阵
顶点向量存储。用两个数组分别存储数据(定点)信息和数据元素之间关系(边或弧)信息。
2、邻接表
邻接表是图一种链式存储构造。在邻接表中,对图中每个定点建立一种单链表,第i个单链表中节点表达依附于定点vi边。每个节点由3个域构成,其中邻接点域(adjvex)批示与定点vi邻接点在图中位置,链域(nextarc)批示下一条边或弧节点;数据域(info)存储和边或弧有关信息,如权值等。每个链表上附设一种头节点。在表头节点中,除了设有链域(firstarc)指向链表中第一种节点之外,还设有存储定点vi名或其她关于信息数据域(data)。
3、图深度遍历
深度优先搜索遍历类似于树先根遍历,是树先跟遍历推广。假设初始状态是图中所有顶点未曾被访问,则深度优先搜索可从图中某个顶点v出发, 访问此顶点,然后依次从v未被访问邻接点出发深度优先遍历图,甚至图中所有和v相通顶点都被访问到;若此时图中尚有顶点未被访问,则另选图中一种未曾被访问顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。
4、图广度遍历
广度优先遍历类似于树按层次遍历过程。假设从图中某顶点v出发,在访问了v之后依次访问v各个未曾访问过邻接点,然后分别从这些邻接点出发依次访问它们邻接点,并使“先被访问顶点邻接点”先与“后被访问顶点邻接点”被访问,直至图中所有已被访问顶点邻接点都被访问到。若此时图中尚有顶点未被访问,则另选图中一种曾被访问顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。
五、模块划分
一、基于邻接矩阵深广度遍历
1.Status InitQueue(LinkQueue *Q)
依照已知Q初始化队列
2.Status QueueEmpty (LinkQueue Q)
判断队列与否为空
3.Status EnQueue(LinkQueue *Q,QElemType e)
将e压入队尾
4.Status DeQueue(LinkQueue *Q,QElemType *e)
取队头元素e
5.int LocateVex(MGraph G,VertexType v)
定位定点v
6.void CreateGraph(MGraph *G)
建立无向图邻接矩阵
7.void PrintGraph(MGraph G)
输出邻接矩阵无向图
8.int FirstAdjVex(MGraph G,int v)
第一种邻接点定位
9.int NextAdjVex(MGraph G,int v,int w)
查找下一种邻接点
10.void Dfs(MGraph G,int v)
实现图一次遍历
11.void DfsTraverse(MGraph G)
实现图深度遍历
12.void BfsTraverse(MGraph G)
实现图广度遍历
13.Main
主函数
二、基于邻接表实现图深广度遍历
1.Status InitQueue(LinkQueue *Q)
依照已知Q初始化队列
2.Status QueueEmpty (LinkQueue Q)
判断队列与否为空
3.Status EnQueue(LinkQueue *Q,QElemType e)
将e压入队尾
4.Status DeQueue(LinkQueue *Q,QElemType *e)
取队头元素e
5.void createALGraph(ALGraph *G)
建立无向图邻接矩阵
6.void PrintGraph(MGraph G)
输出邻接矩阵无向图
7.int FirstAdjVex(MGraph G,int v)
第一种邻接点定位
8.int NextAdjVex(MGraph G,int v,int w)
查找下一种邻接点
9.void Dfs(MGraph G,int v)
实现图一次深度遍历
10.void DfsTraverse(MGraph G)
实现图深度遍历
11.void BFS(ALGrap