单链表的数组表示形式:
head[a]:头指针。初始化时指向空结点(值为-1),插入元素后指向头结点后的第一边。 e[idx]:存储idx终点的值。 ne[idx]:当前idx的next指针其返回值是下一个边的序号。 idx:边的序号。 a:节点 |
若按序插入边(1,4)、(4,3)、(1,2)、(2,4)、(1,3),按照上文所述的图/树的数组模拟实现的邻接表代码,其模拟执行过程如下图所示:
举例应用:树的dfs遍历模板
int dfs(int u)
{
st[u] = true; // st[u] 表示点u已经被遍历过
for (int i = h[u]; i != -1; i = ne[i])//遍历邻接表
{
int j = e[i];
if (!st[j]) dfs(j);
}
}