/ WHOJ / 讨论 / 分享 /

链式前向星

链式前向星使用 \(2\) 个数组:\(\text{head}\) 和 \(\text{e}\)。表头数组 \(\text{head}\),称之为点集;\(\text{e}\)数组为边集。

空间复杂度:\(\Theta(|v|+|E|)\)

优点:节省节点、代码简单、常数小,能快速找到某个节点的所有子节点。

struct
{
    int v,w,nxt;
} e[MAXN];
int head[MAXN],nE;//nE是当前分配了多少
inline void AddEdge(int &u,int &v,int &w)
{
    e[++nE].nxt=head[u];
    head[u]=nE;
    e[nE].v=v;
    e[nE].w=w;
}
for(int i=1; i<=n; i++) //遍历所有的边
{
    for(int j=head[i]; j; j=e[j].nxt)
        printf("%d ",e[j].v);
    printf("\n");
}

0 条评论

目前还没有评论...