C语言用邻接表存储有向图,输出该邻接表,用主函数实现测试
时间: 2024-12-26 14:29:09 浏览: 3
在C语言中,我们可以使用链表结构来实现有向图的邻接表存储。每个节点通常包含两个部分:一个指向其他节点的指针,以及一个标识其关联顶点的信息(例如,如果是整数表示目标节点)。以下是基本的邻接表结构定义和输出邻接表的一个简单示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义邻接表节点结构
typedef struct Node {
int vertex; // 节点所代表的顶点
struct Node* next; // 指向下一个节点的指针
} Node;
// 链表头部
Node* head = NULL;
// 添加边到邻接表
void addEdge(int src, int dest) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (!newNode) {
printf("Memory allocation failed.\n");
return;
}
newNode->vertex = dest;
newNode->next = head;
head = newNode;
}
// 输出邻接表
void printAdjacencyList() {
Node* temp = head;
while (temp != NULL) {
printf("(%d) -> ", temp->vertex);
temp = temp->next;
}
printf("\n");
}
int main() {
// 初始化并添加边
addEdge(0, 1); // 从顶点0到顶点1有边
addEdge(0, 2); // 从顶点0到顶点2也有边
// 输出邻接列表
printf("邻接表表示如下:\n");
printAdjacencyList();
// 测试和演示
// ...这里可以添加更多的边并再次调用printAdjacencyList()
return 0;
}
```
在这个例子中,`main` 函数用于初始化邻接表,并添加一些边。然后,`printAdjacencyList` 函数遍历链表并打印出每个节点的顶点和连接的顶点。
阅读全文