数据结构图邻接表代码
时间: 2023-07-11 11:23:49 浏览: 86
以下是邻接表的基本结构和代码实现:
```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);
for(int i = 1; i <= m; ++i){
int u, v;
scanf("%d%d", &u, &v);
add(u, v); // 有向图只需要这一句
add(v, u); // 无向图需要加上这一句
}
return 0;
}
```
其中,结构体 `Edge` 表示每条边的信息,包括了边的终点 `to` 和下一条邻接表中与该边起点相同的边的位置 `nxt`。数组 `head` 表示每个点的邻接表的起点位置,初始化为 `-1`。函数 `add` 用于向邻接表中添加一条边。在主函数中,先读入点数和边数,再循环读入每一条边并加入到邻接表中。对于有向图,只需要加入一次;对于无向图,需要加入两次,因为无向图中的边是双向的。
阅读全文