1、建立下面这个有向图的邻接矩阵存储并完成以下工作: (1)、输出该邻接矩阵; (2)、求出第i个顶点的出度并输出; (3)、求出第i个顶点的入度并输出。5顶点a,b,c,d.e;a指向b,c,d,e;c指向e;d指向b.c语言编写
时间: 2024-02-15 10:06:10 浏览: 56
好的,以下是使用C语言编写的实现,可以实现你要求的功能:
```c
#include <stdio.h>
#define V 5 // 顶点数
int graph[V][V] = {
{0, 1, 1, 1, 1},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 1},
{0, 1, 0, 0, 0},
{0, 0, 0, 0, 0}
}; // 邻接矩阵
void printGraph() {
printf(" a b c d e\n");
for(int i = 0; i < V; i++) {
printf("%c ", 'a' + i);
for(int j = 0; j < V; j++) {
printf("%d ", graph[i][j]);
}
printf("\n");
}
printf("\n");
}
int outDegree(char vertex) {
int index = vertex - 'a';
int count = 0;
for(int i = 0; i < V; i++) {
if(graph[index][i] == 1) {
count++;
}
}
return count;
}
int inDegree(char vertex) {
int index = vertex - 'a';
int count = 0;
for(int i = 0; i < V; i++) {
if(graph[i][index] == 1) {
count++;
}
}
return count;
}
int main() {
printGraph();
printf("出度:\n");
for(char c = 'a'; c <= 'e'; c++) {
printf("%c的出度: %d\n", c, outDegree(c));
}
printf("\n");
printf("入度:\n");
for(char c = 'a'; c <= 'e'; c++) {
printf("%c的入度: %d\n", c, inDegree(c));
}
printf("\n");
return 0;
}
```
运行程序会得到以下输出结果:
```
a b c d e
a 0 1 1 1 1
b 0 0 0 0 0
c 0 0 0 0 1
d 0 1 0 0 0
e 0 0 0 0 0
出度:
a的出度: 4
b的出度: 0
c的出度: 1
d的出度: 1
e的出度: 0
入度:
a的入度: 0
b的入度: 2
c的入度: 1
d的入度: 1
e的入度: 2
```
希望这个程序能够帮助到你!
阅读全文