怎么用结构体表示图的邻接表
时间: 2023-07-11 08:27:15 浏览: 82
可以使用如下的结构体表示图的邻接表:
```
struct Edge {
int to; // 边的终点
int weight; // 边的权重
int next; // 下一条边的位置
};
struct Node {
int head; // 第一条边的位置
};
```
其中,`Edge` 表示一条边,包括它的终点 `to`、权重 `weight` 和下一条边的位置 `next`。`Node` 表示一个节点,包括它的第一条边的位置 `head`。使用一个数组 `node` 存储所有的节点,其中第 `i` 个节点的第一条边的位置为 `node[i].head`。使用一个数组 `edge` 存储所有的边,其中第 `i` 条边的终点、权重和下一条边的位置分别为 `edge[i].to`、`edge[i].weight` 和 `edge[i].next`。邻接表的建立过程可以参考如下的代码:
```
const int MAXN = 100005;
Node node[MAXN];
Edge edge[MAXN * 2];
int cnt;
void add_edge(int u, int v, int w) {
edge[++cnt].to = v;
edge[cnt].weight = w;
edge[cnt].next = node[u].head;
node[u].head = cnt;
}
```
以上代码中,`add_edge(u, v, w)` 表示在节点 `u` 和节点 `v` 之间加入一条权重为 `w` 的边。
阅读全文