算法思想:
先初始化邻接矩阵。依次遍历各个顶点的边表,根据边表中记录的“改弧所指向的顶点的位置”修改邻接矩阵arc[i][j]的值。例如遍历第 i 行的时候(当前的顶点所在行数为 i ),依次遍历该顶点的边表结点,若当前顶点的弧顶点的位置为j,则arc[i][j] = 1
创建如下的图:

全部代码如下:
#include <iostream>
using namespace std;
#pragma region 创建邻接表存储的无向图
#define MaxVertexNum 100 //图中顶点数目最大值
#define VertexType char
#define _for(i,a,b) for(int i=(a);i<(b);i++)
typedef struct ArcNode {
//边表结点
int adjvex; //该弧所指向的顶点的位置
ArcNode* next; //指向下一条弧的指针
}ArcNode;
typedef struct VNode {
//顶点表结点
VertexType data; //顶点信息
ArcNode* first; //指向第一条依附该顶点的弧的指针
}VNode,AdjList[MaxVertexNum];
typedef struct {
AdjList vertices; //领接表
int vexnum, arcnum; //图的顶点数和弧数
}ALGraph; //ALGraph是以邻接表存储的图类型
int LocateVex(ALGraph& G, VertexType x)

本文介绍了如何从使用邻接表表示的无向图中,通过深度优先搜索(DFS)遍历,逐步转换为邻接矩阵表示。通过实例展示了创建邻接表、深度优先遍历和矩阵转换的过程,并提供了相应的C++代码实现。
最低0.47元/天 解锁文章
1570

被折叠的 条评论
为什么被折叠?



