离散数学已知有向图求邻接矩阵c语言
时间: 2023-06-27 21:04:52 浏览: 70
以下是一个简单的 C 代码,用于将一个有向图转换为邻接矩阵:
```c
#include <stdio.h>
#define MAX_ROW 50
#define MAX_COL 50
int main()
{
int adjMatrix[MAX_ROW][MAX_COL];
int numNodes, numEdges;
printf("Enter number of nodes: ");
scanf("%d", &numNodes);
printf("Enter number of edges: ");
scanf("%d", &numEdges);
// 初始化矩阵
for (int i = 0; i < numNodes; i++)
{
for (int j = 0; j < numNodes; j++)
{
adjMatrix[i][j] = 0;
}
}
// 添加边
for (int i = 0; i < numEdges; i++)
{
int src, dest;
printf("Enter edge %d (src dest): ", i+1);
scanf("%d %d", &src, &dest);
adjMatrix[src][dest] = 1;
}
// 打印邻接矩阵
printf("\nAdjacency Matrix:\n");
for (int i = 0; i < numNodes; i++)
{
for (int j = 0; j < numNodes; j++)
{
printf("%d ", adjMatrix[i][j]);
}
printf("\n");
}
return 0;
}
```
该程序首先要求用户输入节点数和边数。然后,它将初始化一个大小为 `numNodes x numNodes` 的矩阵,并将所有元素设置为 0。接下来,它会要求用户输入每个边的源和目标节点,并将相应的矩阵元素设置为 1。最后,它将打印出邻接矩阵。
请注意,该程序假设节点从 0 到 `numNodes-1` 进行编号。如果您的节点从 1 开始编号,则需要将输入和矩阵访问命令中的节点编号减去 1。
阅读全文