(1) 图的邻接矩阵结构体定义
时间: 2023-07-21 11:06:34 浏览: 114
邻接矩阵是一种常用的图存储方式,可以使用结构体定义来实现:
```c
#define MAX_VERTEX_NUM 100 // 最大顶点数
// 顶点结构体
typedef struct {
// 顶点信息,可以根据需要进行扩展
int data;
} VertexType;
// 邻接矩阵结构体
typedef struct {
VertexType vexs[MAX_VERTEX_NUM]; // 顶点数组
int arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 邻接矩阵数组
int vexnum; // 顶点数
int arcnum; // 弧数
} MGraph;
```
其中,`vexs`数组存储每个顶点的信息,`arcs`二维数组存储每条边的权值或是否存在,`vexnum`表示顶点数,`arcnum`表示边数。
相关问题
图的邻接矩阵结构体定义
邻接矩阵是一种常见的图的存储方式,可以使用一个二维数组来表示图中各个节点之间的连接关系。通常,我们可以使用一个结构体来表示邻接矩阵,其定义如下:
```c++
struct GraphMatrix {
int vertexNum; // 图中节点的数量
int edgeNum; // 图中边的数量
int **matrix; // 存储邻接矩阵的二维数组
};
```
在这个结构体中,`vertexNum`表示图中节点的数量,`edgeNum`表示图中边的数量,`matrix`是一个二维指针,用于存储邻接矩阵。具体地,`matrix[i][j]`表示节点i和节点j之间是否有一条边。如果有,那么`matrix[i][j]`的值为该边的权值;否则,`matrix[i][j]`的值为一个特定的标记(例如0或INF)。
用C语言结构体定义邻接矩阵和邻接表表示图的结构体
好的,下面是使用C语言定义邻接矩阵和邻接表表示图的结构体:
邻接矩阵表示法:
```c
#define MAX_VERTEX_NUM 20 // 最大顶点个数
typedef struct {
int vexs[MAX_VERTEX_NUM]; // 存储顶点的数组
int arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 存储边的二维数组
int vexnum, arcnum; // 记录顶点数和边数
} MGraph;
```
邻接表表示法:
```c
#define MAX_VERTEX_NUM 20 // 最大顶点个数
// 边表结点
typedef struct ArcNode {
int adjvex; // 邻接点在顶点数组中的位置下标
struct ArcNode *nextarc; // 指向下一个邻接点的指针
int weight; // 权值
} ArcNode;
// 顶点表结点
typedef struct VNode {
int data; // 顶点的数据域
ArcNode *firstarc; // 指向第一条依附该顶点的边的指针
} VNode, AdjList[MAX_VERTEX_NUM];
typedef struct {
AdjList vertices; // 存储顶点的数组
int vexnum, arcnum; // 记录顶点数和边数
} ALGraph;
```
阅读全文