数据结构学习笔记—图---图的连通性、顶点间的路径

本文探讨了无向图的连通性,包括如何判断两个顶点是否连通、连通分量的概念及计算方法。此外,介绍了完全图的定义以及计算边数的公式,并提供了创建图的基本数据结构和实现DFS算法的代码示例,用于确定图的连通性和寻找顶点间的路径。
摘要由CSDN通过智能技术生成
在无向图中,如果从顶点Vi到顶点Vj有路径,则称Vi和Vj连通。若图中任意两个两个顶点之间都连通——连通图。
极大连通子图——连通分量。(无向图)
从一个顶点开始作为一个子图,逐个添加和这个子图有边相连的顶点,直到所有相连的顶点都被纳入到图中所生成的子图就是一个极大连通子图。
完全图——任意两个顶点之间都有边或弧
对于无向图,有n个顶点,则有有n(n-1)/2条边;
对于有向图,有n个顶点,则有n(n-1)条边。

判定两个顶点Vi和Vj之间是否有路径
若是有有向图,对顶点Vi作深度优先搜索,即DFS(G,Vi),若存在路径,则在搜索过程中必有visited[Vj]=1。若是无向图,对其中任意一顶点作DFS即可。

求解一个无向图的连通分量个数,并判定该无向图的连通性。
选择任意某一个顶点V,执行DFS(G,V)算法时,可以访问到V所在的连通分量中的所有顶点,所以遍历整个图而选择的初始出发点的个数即为图的连通分量的个数。
若连通分量的个数为1,表示图G是连通的,否则非连通。
图的基本数据结构:
#define MAX_VERTEX_NUM 20   //图中最大节点数目
#define INFINITY    10000

typedef struct ArcNode           //边表结点,即邻接链表的表结点
{
     int adjvex;                   //所指向下个结点的位置,对应数组中的下标
     struct ArcNode *nextarc;       //指向下一条弧的指针
     int weight;             //权重
}ArcNode;

typedef struct VNode          //顶点结构
{
     VertexType data;        //顶点数据类型
     ArcNode *firstarc;       //顶点相关弧链表的头结点
}VNode,AdjList[MAX_VERTEX_NUM];   //顶点结点

typedef struct
{
     AdjList vertices;    //图的顶点数组
     int vexnum,arcnum;  //图的顶点数和边数
}ALGraph;

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define MAX_VERTEX_NUM 20
typedef  int VertexType;

typedef struct ArcNode
{
     int adjvex;
     struct ArcNode *nextarc;
     int weight;
}ArcNode;

typedef struct VNode
{ </
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值