领接矩阵
使用一个V*V的布尔矩阵。当结点a与结点b有连接时,定义a行b列的元素值为true,否则为false。
所以我们需要一个V^2大小的数组。需要的内存空间要求很大。
注:以下图片取自:数据结构(七)图

代码实现

#include <stdio.h>
#include <malloc.h>
#include <memory.h>
#define MAXVEX 100
#define VTYPE char
typedef struct G {
char vertex[MAXVEX];
int vNum;
int arc[MAXVEX][MAXVEX];
int arcNum;
} MGraph, *MGraphPtr;
int _pos(const MGraphPtr m, const char key) {
//结点位置
for (int i = 0; i < m->vNum; i++) {
if (m->vertex[i] == key)
return i;
}
return -1;
}
void createMetrixGraphy(char *v, int v_length,
int *e, int e_length_1, int e_length_2) {
MGraphPtr m = (MGraphPtr)malloc(sizeof(MGraph));
memset(m, 0, sizeof(MGraph));
for (int i = 0; i < v_length; i++) {
for (int j = 0; j < v_length; j++) {
m->arc[i][j] = 0;
}
}
//insert vertex
for (int i = 0; i<v_length; i++) {
m->vertex[i] = v[i];
m->vNum++;
}
//insert edge
for (int i = 0; i < e_length_1; i++) {
int key_1 = *(e + e_length_2 * i +

本文介绍了图的两种存储结构——领接矩阵和邻接表。领接矩阵通过一个V*V的布尔矩阵表示节点间的连接,适合表示稠密图,但内存需求大。邻接表则使用列表数组存储每个节点的邻居,节省空间,适用于稀疏图。文章提供了无向图的C语言代码实现。
最低0.47元/天 解锁文章
1541

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



