数据结构图的邻接表存储完整代码
时间: 2023-07-27 16:27:24 浏览: 52
以下是完整的邻接表存储的图的代码实现:
```c++
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10;
struct Edge{
int to, nxt;
}edge[maxn];
int head[maxn], tot = 0;
int n, m;
void add(int u, int v){
edge[++tot].to = v;
edge[tot].nxt = head[u];
head[u] = tot;
}
int main(){
scanf("%d%d", &n, &m);
memset(head, -1, sizeof(head)); // 初始化邻接表
for(int i = 1; i <= m; ++i){
int u, v;
scanf("%d%d", &u, &v);
add(u, v); // 有向图只需要这一句
add(v, u); // 无向图需要加上这一句
}
for(int i = 1; i <= n; ++i){
printf("%d: ", i);
for(int j = head[i]; j != -1; j = edge[j].nxt){
printf("%d ", edge[j].to);
}
printf("\n");
}
return 0;
}
```
这里我们增加了初始化邻接表的过程,将 `head` 数组全部赋值为 `-1`。在输出每个点的邻接表时,先输出该点的序号,再循环输出其对应的邻接表中的每个点的序号。