要使用C语言编写一个程序输出以邻接表为存储结构的无向图的各顶点的度,首先需要定义一个结构体表示图的顶点,然后创建一个数组存储图的顶点。接着,遍历邻接表,计算每个顶点的度。最后,输出各顶点的度。
以下是具体的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义顶点结构体
typedef struct Vertex {
int data; // 顶点数据
struct Vertex *next; // 指向下一个顶点的指针
} Vertex;
// 计算顶点的度
int degree(Vertex *vertex) {
int count = 0;
Vertex *temp = vertex->next;
while (temp != NULL) {
count++;
temp = temp->next;
}
return count;
}
int main() {
// 创建图的顶点数组
Vertex vertices[5];
// 初始化顶点数据和邻接表
vertices[0].data = 0;
vertices[0].next = &vertices[1];
vertices[1].data = 1;
vertices[1].next = &vertices[2];
vertices[2].data = 2;
vertices[2].next = &vertices[3];
vertices[3].data = 3;
vertices[3].next = &vertices[4];
vertices[4].data = 4;
vertices[4].next = NULL;
// 输出各顶点的度
for (int i = 0; i < 5; i++) {
printf("顶点%d的度为:%d
", vertices[i].data, degree(&vertices[i]));
}
return 0;
}
```
这个程序首先定义了一个表示顶点的结构体`Vertex`,包含一个整数类型的数据成员`data`和一个指向下一个顶点的指针`next`。然后定义了一个计算顶点度的函数`degree`,通过遍历邻接表来计算顶点的度。在`main`函数中,创建了一个顶点数组`vertices`,并初始化了顶点数据和邻接表。最后,遍历顶点数组,输出各顶点的度。
以下是具体的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义顶点结构体
typedef struct Vertex {
int data; // 顶点数据
struct Vertex *next; // 指向下一个顶点的指针
} Vertex;
// 计算顶点的度
int degree(Vertex *vertex) {
int count = 0;
Vertex *temp = vertex->next;
while (temp != NULL) {
count++;
temp = temp->next;
}
return count;
}
int main() {
// 创建图的顶点数组
Vertex vertices[5];
// 初始化顶点数据和邻接表
vertices[0].data = 0;
vertices[0].next = &vertices[1];
vertices[1].data = 1;
vertices[1].next = &vertices[2];
vertices[2].data = 2;
vertices[2].next = &vertices[3];
vertices[3].data = 3;
vertices[3].next = &vertices[4];
vertices[4].data = 4;
vertices[4].next = NULL;
// 输出各顶点的度
for (int i = 0; i < 5; i++) {
printf("顶点%d的度为:%d
", vertices[i].data, degree(&vertices[i]));
}
return 0;
}
```
这个程序首先定义了一个表示顶点的结构体`Vertex`,包含一个整数类型的数据成员`data`和一个指向下一个顶点的指针`next`。然后定义了一个计算顶点度的函数`degree`,通过遍历邻接表来计算顶点的度。在`main`函数中,创建了一个顶点数组`vertices`,并初始化了顶点数据和邻接表。最后,遍历顶点数组,输出各顶点的度。