输出有向图的邻接矩阵c语言代码
时间: 2023-12-04 13:40:58 浏览: 45
以下是输出有向图邻接矩阵的C语言代码:
```c
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int n, m;
int adj[MAX_SIZE][MAX_SIZE] = {0}; // 初始化邻接矩阵为0
// 读入有向图的顶点数和边数
scanf("%d %d", &n, &m);
// 读入有向图的边,更新邻接矩阵
for (int i = 0; i < m; i++) {
int u, v;
scanf("%d %d", &u, &v);
adj[u][v] = 1;
}
// 输出邻接矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", adj[i][j]);
}
printf("\n");
}
return 0;
}
```
相关问题
有向图的邻接矩阵c语言代码
以下是有向图的邻接矩阵C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXVEX 100 // 最大顶点数,可根据实际情况修改
typedef struct {
int vexs[MAXVEX]; // 存储顶点的数组
int matrix[MAXVEX][MAXVEX]; // 存储邻接矩阵的二维数组
int vexnum, edgenum; // 顶点数和边数
} MGraph;
// 创建有向图的邻接矩阵
void CreateMGraph(MGraph *G) {
int i, j, k, w;
printf("请输入顶点数和边数:\n");
scanf("%d%d", &G->vexnum, &G->edgenum);
printf("请输入顶点信息:\n");
for (i = 0; i < G->vexnum; i++) {
scanf("%d", &G->vexs[i]);
}
for (i = 0; i < G->vexnum; i++) {
for (j = 0; j < G->vexnum; j++) {
G->matrix[i][j] = 0; // 初始化邻接矩阵
}
}
printf("请输入边的信息:\n");
for (k = 0; k < G->edgenum; k++) {
printf("请输入边(vi, vj)的下标i、下标j和权值w:\n");
scanf("%d%d%d", &i, &j, &w);
G->matrix[i][j] = w; // 存储边的信息到邻接矩阵
}
}
// 打印邻接矩阵
void PrintMGraph(MGraph G) {
int i, j;
printf("邻接矩阵为:\n");
for (i = 0; i < G.vexnum; i++) {
for (j = 0; j < G.vexnum; j++) {
printf("%d ", G.matrix[i][j]);
}
printf("\n");
}
}
int main() {
MGraph G;
CreateMGraph(&G);
PrintMGraph(G);
return 0;
}
```
有向图邻接矩阵c语言实现代码
以下是有向图邻接矩阵的 C 语言实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_VERTEX_NUM 100 // 最大顶点数
// 定义邻接矩阵结构体
typedef struct {
int vexs[MAX_VERTEX_NUM]; // 存放顶点的数组
int arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 存放边的二维数组
int vexnum, arcnum; // 顶点数和边数
} MGraph;
// 初始化邻接矩阵
void InitMGraph(MGraph *G) {
int i, j;
printf("请输入顶点数和边数:");
scanf("%d%d", &G->vexnum, &G->arcnum);
printf("请输入顶点(顶点编号从 0 开始):\n");
for (i = 0; i < G->vexnum; i++) {
scanf("%d", &G->vexs[i]);
}
for (i = 0; i < G->vexnum; i++) {
for (j = 0; j < G->vexnum; j++) {
G->arcs[i][j] = 0; // 初始化边的权重为 0
}
}
printf("请输入边的信息(起点 终点):\n");
for (i = 0; i < G->arcnum; i++) {
int start, end;
scanf("%d%d", &start, &end);
G->arcs[start][end] = 1; // 将起点和终点的权重设为 1
}
}
// 打印邻接矩阵
void PrintMGraph(MGraph *G) {
int i, j;
printf("顶点:");
for (i = 0; i < G->vexnum; i++) {
printf("%d ", G->vexs[i]);
}
printf("\n邻接矩阵:\n");
for (i = 0; i < G->vexnum; i++) {
for (j = 0; j < G->vexnum; j++) {
printf("%d ", G->arcs[i][j]);
}
printf("\n");
}
}
int main() {
MGraph G;
InitMGraph(&G);
PrintMGraph(&G);
return 0;
}
```