领接矩阵
使用一个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 + 0);
int