c++邻接表创建图算法
时间: 2023-11-05 16:06:24 浏览: 74
邻接表是一种常见的图存储结构,它可以用于表示无向图和有向图。邻接表的基本思想是将每个顶点的所有邻接点存储在一个链表中,这些链表相互独立,且顶点的数量和边的数量相等。
以下是使用邻接表创建有向图的C++代码:
```cpp
#include<iostream>
#include<cstring>
using namespace std;
const int MAXN = 100;
struct Edge{
int to, next;
}edge[MAXN];
int head[MAXN], tot;
void addEdge(int u, int v){
edge[++tot].to = v;
edge[tot].next = head[u];
head[u] = tot;
}
int main(){
int n, m;
cin >> n >> m; // n 个点,m 条边
memset(head, -1, sizeof(head)); // 初始化链表头
for(int i = 1; i <= m; i++){
int u, v;
cin >> u >> v; // 输入边的两个顶点
addEdge(u, v); // 添加边
}
for(int i = 1; i <= n; i++){
cout << i << ": ";
for(int j = head[i]; j != -1; j = edge[j].next){
cout << edge[j].to << " "; // 输出邻接点
}
cout << endl;
}
return 0;
}
```
在这段代码中,我们首先输入了图的顶点数 $n$ 和边数 $m$,然后使用 `addEdge` 函数添加每条边,最后遍历整个邻接表,输出每个顶点的所有邻接点。
需要注意的是,这里的邻接表使用了数组和链表结合的方式来实现,其中 `head` 数组存储的是每个顶点的链表头,`edge` 数组存储的是每条边的信息,`tot` 记录当前边的编号。
阅读全文