定义


链式前向星

链式前向星是邻接表的一种特殊实现,通过数组来模拟链表,更为高效。

Tips

在存储无向图时,请注意将数组大小开到2倍。

模版


int N, M;
int head[N], nxt[N], cnt;
// head为每个节点的第一条边,默认为-1
// nxt为每条边的下一条边,下一条边为-1时遍历结束
struct edge  
{  
    int to, w; // 终点和边权
} edges[M];  
 
void init() // 初始化
{
	cnt = -1;
	for(int i = 0; i < N; i++)
		head[i] = -1;
}
 
void add(int u, int v, int w)  
{
    nxt[++cnt] = head[u];  // edges[++cnt]为新的边,原来的第一条边成为新的边的下一条边
    head[u] = cnt;  // 新的边成为u的第一条边
    edges[cnt].to = v;  // 设置终点
    edges[cnt].w = w;  // 设置边权
}
 
void traverse_edges(int u) // 遍历节点u的出边
{
	for(int i = head[u]; i != -1; i = nxt[i])
	{
		int v = edges[i].to;
		int w = edges[i].w;
	}
}