没有合适的资源?快使用搜索试试~ 我知道了~
首页数据结构综合课设图遍历的演示.docx
资源详情
资源评论
资源推荐
图遍历的演示
一. 问题描述
很多涉及图上操作的算法都是以图的遍历操作为基础
的。试写一个程序,演示无向图的遍历操作。
二. 基本要求
以邻接表为存储结构,实现连通无向图的深度优先和
广度优先遍历。以用户指定的结点为起点,分别输出
每种遍历下的结点访问序列和相应生成树的边集。
三. 算法思想
和树的遍历类似,图的遍历也是从某个顶点出发,沿
着某条搜索路径对图中每个顶点各做一次且仅做一次
访问。它是许多图的算法的基础。遍历常用两种方法:
深度优先遍历,广度优先遍历。
图的深度优先搜索是一种递归的过程,正如算法名称
那样深度优先搜索所遵循的搜索策略是尽可能“深”地搜
索图。在深度优先搜索中,对于最新发现的顶点如果
它还有以此为起点而未探测到的边,就沿着此边继续
下去。当结点 V 的所有边都已被探寻过,搜索将回溯
到发现结点 V 有那条边的始结点。这一过程一直进行
到已发现从源结点可达的所有结点为止。如果还存在
未被发现的结点,则选择其中一个作为源结点并重复
以上过程,整个过程反复进行直到所有结点都被发现
为止。
广度优先搜索算法是最简便的图的搜索算法之一,首
先访问指定的起始结点 Vi 并将其标记为已访问过然后
右 Vi 出发访问与它相邻接的所有顶点 Vj、Vk…,并
均标记为已访问过,然后再按照 Vj、Vk…的次序,访
问每一个顶点的所有未被访问过的邻接顶点并均标记
为已访问过,下一步再从这些顶底出发访问与它们相
邻接的问被访问过的顶点,如此下去,直到所有的顶
点均被访问过为止。
四. 模块划分
该程序包含三个模块,分别为建立邻接表、深度优先
遍历、广度优先遍历。
1、 建立邻接表
void CreatALGraph(ALGraph *G)
{
int i,j,k;
char a;
EdgeNode *s; /*定义边表结点*/
printf("Input VertexNum(n) and
EdgesNum(e):");
scanf("%d,%d",&G->n,&G->e); /*读入
顶点数和边数*/
scanf("%c",&a);
printf("Input Vertex string:");
for(i=0;i<G->n;i++) /*建立边表*/
{
scanf("%c",&a);
G->adjlist[i].vertex=a; /*读入顶点
信息*/
G->adjlist[i].5rstedge=NULL; /*边
表置为空表*/
}
printf("Input edges,Creat Adjacency
List\n");
for(k=0;k<G->e;k++)
{ /*建立边表*/
scanf("%d%d",&i,&j);
s=(EdgeNode
*)malloc(sizeof(EdgeNode)); /*/生成边表结
点*/
s->adjvex=j; /*
邻接点序号为 j*/
s->next=G->adjlist[i].5rstedge;
G-
>adjlist[i].5rstedge=s; /*将新结点
*S 插入顶点 Vi 的边表头部*/
s=(EdgeNode*)malloc(sizeof(EdgeN
ode));
s->adjvex=i; /*
邻接点序号为 i*/
s->next=G->adjlist[j].5rstedge;
G-
>adjlist[j].5rstedge=s; /*将新结点
*S 插入顶点 Vj 的边表头部*/
}
}
2、 深度优先遍历
void DFSM(ALGraph *G,int i)
{
EdgeNode *p;
printf("%c",G->adjlist[i].vertex);
/*访问顶点 Vi*/
visited[i]=TRUE;
/*标记 Vi 已被访问*/
p=G->adjlist[i].5rstedge;
/*取 Vi 边表的头指针*/
剩余16页未读,继续阅读
MichaelJeilin
- 粉丝: 2
- 资源: 16
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0