c语言,以邻接表的形式创建一个无向图
时间: 2023-12-03 20:47:18 浏览: 132
下面是以邻接表的形式创建一个无向图的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表结构体
struct node {
int vertex; // 存储顶点的编号
struct node* next; // 指向下一个节点的指针
};
// 初始化链表
struct node* createNode(int v) {
struct node* newNode = malloc(sizeof(struct node));
newNode->vertex = v;
newNode->next = NULL;
return newNode;
}
// 添加边
void addEdge(struct node** graph, int src, int dest) {
// 添加从 src 到 dest 的边
struct node* newNode = createNode(dest);
newNode->next = graph[src];
graph[src] = newNode;
// 添加从 dest 到 src 的边
newNode = createNode(src);
newNode->next = graph[dest];
graph[dest] = newNode;
}
// 打印邻接表
void printGraph(struct node** graph, int vertices) {
for (int i = 0; i < vertices; i++) {
struct node* temp = graph[i];
printf("Vertex %d: ", i);
while (temp) {
printf("%d -> ", temp->vertex);
temp = temp->next;
}
printf("NULL\n");
}
}
int main() {
int vertices = 5; // 图的顶点个数
struct node** graph = malloc(vertices * sizeof(struct node*));
// 初始化邻接表为空
for (int i = 0; i < vertices; i++) {
graph[i] = NULL;
}
// 添加边
addEdge(graph, 0, 1);
addEdge(graph, 0, 4);
addEdge(graph, 1, 2);
addEdge(graph, 1, 3);
addEdge(graph, 1, 4);
addEdge(graph, 2, 3);
addEdge(graph, 3, 4);
// 打印邻接表
printGraph(graph, vertices);
return 0;
}
```
上面的代码中,我们使用一个链表数组来表示邻接表,其中每个链表都表示与该顶点相连的顶点列表。在添加边时,我们同时添加从 src 到 dest 和从 dest 到 src 的边,因为这是一个无向图。最后打印邻接表,以确认图是否正确地构建。
阅读全文
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)