c语言实现邻接表储存有向图
时间: 2023-08-13 10:05:59 浏览: 94
C++实现有向图的邻接表表示
5星 · 资源好评率100%
要实现邻接表储存有向图,我们首先需要定义一个结构体来表示图中的每个节点,包括该节点的值和与该节点相邻的节点。
```c
typedef struct node {
int value; // 节点的值
struct node *next; // 指向下一个相邻节点的指针
} Node;
```
然后,我们可以定义一个数组来储存所有节点,并将每个节点的指针初始化为 NULL。
```c
#define MAX_NODE_NUM 100
Node graph[MAX_NODE_NUM];
// 初始化图中所有节点的指针为 NULL
for (int i = 0; i < MAX_NODE_NUM; i++) {
graph[i].next = NULL;
}
```
接下来,我们可以定义一个函数来向图中添加边。对于有向图,我们只需要在起点节点的相邻节点列表中添加一个指向终点节点的指针即可。
```c
void addEdge(int from, int to) {
Node *p = (Node*) malloc(sizeof(Node)); // 分配新节点的内存空间
p->value = to;
p->next = graph[from].next;
graph[from].next = p;
}
```
最后,我们可以在主函数中调用 addEdge 函数来构建有向图。
```c
int main() {
addEdge(0, 1);
addEdge(1, 2);
addEdge(2, 3);
// ...
return 0;
}
```
阅读全文