无向图的深度优先遍历非递归_数据结构-图

图的定义

441216f263bec79da5b0b8a540be41d9.png

图[Graph]是有顶点的有穷非空集合和顶点之间边的集合组成。通常表示为:G[V,E].其中,G表示一个图,V是图G中的顶点集合,E是图G中边的集合。边没有方向的图叫做无向图,有方向的叫做有向图;任意两个顶点之间都有无向边连接叫做无向完全图;带有权值的图叫做网;

图的存储

顺序存储:利用一维数组存储图的顶点集合;利用二维数组存储顶点之间的关系;

邻接矩阵:设图G有n个顶点,则邻接矩阵是一个n*n的方阵定义为:

086c5d6bbccaa9c2c8d3f66507ed4b8b.png
顶点数组存储顶点,边数组存储顶点之间的连接关系,主对角线自己与自己的关系为0,无向图二维数组对称关系,通过计算V1的度来判断和V1有关系的节点

顺序存储数据结构:(邻接矩阵)

#define MAXVEX 100 

链式存储数据结构:(邻接表)

1d8c8136924ac153009f824d7c198507.png

1c6c936f1de091c06cd7e3dd65307cc8.png
//邻接表的节点

图的遍历

  • 深度优先遍历(DFS)(类似树的前序遍历)

第一次遍历根据右手原则遍历,遍历过的节点做标记,遍历到没有节点可以遍历,返回遍历,直到到达第一个遍历的节点。

302cb0101f2cd94cb45fd72ba9ff0a6e.png

f3490785cbe63c702a37d0fb40d23b7a.png

2752709d44c8ab4f580fcb7dcbcee3e2.png

邻接矩阵深度优先遍历代码(DFS)

//手动创建上面结构图

邻接表深度优先遍历代码(DFS)

//手动创建邻接表
  • 广度优先遍历(类似树的层序遍历)
  1. 把根节点放到队列的末尾。
  2. 每次从队列的头部取出一个元素,查看这个元素所有的下一级元素,把它们放到队列的末尾,并把这个元素记为它下一级元素的前驱。
  3. 找到所要找的元素时结束程序。
  4. 如果遍历整个树还没有找到,结束程序。

邻接矩阵广度优先遍历代码(BFS)

void 

邻接表广度优先遍历代码(BFS)

void 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值