//对于非连通图,每个连通分量中的顶点集,和遍历时走过的边一起构成若干颗生成树,这些连通分量的生成树组成非连通图的生成森林。
//在对无向图进行遍历时,对于连通图,仅从图中任一点出发,进行深度优先搜索或广度搜索,便可以访问到图中所有观点。
// 对于非连通图,则需从多个顶点出发进行搜索,而每一次从一个新的起始点出发进行搜索过程中得到的顶点访问序列恰为其各个连通分量的顶点集。
#include < stdio.h >
#include < stdlib.h >
#include < string.h >#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2 //Include by "math.h"!typedef int Status ;
#ifndef Boolean
#define Boolean unsigned char
#endif//-------------------------无向图的邻接多重表存储表示-------------------------------//
#define MAX_VERTEX_NUM 20 //最大顶点个数(vertex顶点)
#define MAX_NAME 5 //关于顶点信息的字符串长度
#define MAX_INFO 20 //边的信息字符树Boolean visite[ MAX_VERTEX_NUM ] ;
typedef enum{ unvisited , visited } VisitIf ;
typedef char InfoType ; //如果为字符信息,则可以用char;如果为权值,则可以用int.
typedef char VertexType[ MAX_NAME ] ;//VertexType可以根据实际情况灵活设定类型!int,float,char…typedef struct EBox { //边结点
VisitIf mark ; //访问标记
int ivex , jvex ; //该边依附的两个顶点的位置
struct EBox *ilink , *jlink ; //分别指向依附这两个顶点的下一条边
InfoType *info ; //该边信息指针
} EBox ;typedef struct VexBox { //顶点结点
VertexType data ;
EBox *firstedge ; //指向第一条依附该顶点的边
} VexBox ;typedef struct {
VexBox adjmulist[ MAX_VERTEX_NUM ] ;
int vexnum , edgenum ; //无向图的当前顶点数和边数
} AMLGraph ;Status LocateVex( AMLGraph G , VertexType u ) ;
Status CreateUDG( AMLGraph *G ) ;
VertexType *GetVex( AMLGraph G , int n ) ;
Status FirstAdjVex( AMLGraph G , VertexType u ) ;
Status NextAdjVex( AMLGraph G , VertexType u , VertexType w ) ;
Status MarkUnvisited( AMLGraph *G ) ;
Status Output( AMLGraph G ) ;//------------------------Link Tree--------------------------//
typedef VertexType TElemType ; //为一个字符数组
typedef struct CSNode{
TElemType data ;
struct CSNode *firstchild , *nextsibling ;
} CSNode , *CSTree ;Status PreOrderTraverse( CSTree T , void( *v )( char *p ) ) ;
void visit( char *p ) ;//-----------------------------------------------------------------------------------//
void DFSForest( AMLGraph G , CSTree
第七章(5).非连通图的生成森林
最新推荐文章于 2022-05-27 08:15:00 发布
这篇博客介绍了如何处理非连通图的生成森林问题,通过深度优先搜索策略,遍历无向图的每个连通分量,构建生成树,并形成生成森林。文章提供了C语言实现的算法,包括邻接多重表存储、遍历和输出无向图的函数,以及深度优先搜索森林和树的代码示例。
摘要由CSDN通过智能技术生成