1. 程式人生 > >圖的鄰接表與由鄰接表匯出逆鄰接表

圖的鄰接表與由鄰接表匯出逆鄰接表

void Reverse(ALGraph A,ALGraph &B)
{
    int i,k;
    ArcNode *p1,*p2;
    B.vn=A.vn;
    B.en=A.en;
    for(i=1; i<=A.vn; i++)
    {
        scanf("%c",&B.adjlist[i].data);
        B.adjlist[i].firstarc=NULL;
    }

    for(i=1; i<=A.vn; i++)
    {
        p1=A.adjlist[i].firstarc;
        while(p1)
        {
            k=p1->adjvex;
            p2=(ArcNode *)malloc(sizeof(ArcNode));
            p2->adjvex=i;
            p2->nextarc=B.adjlist[k].firstarc;
            B.adjlist[k].firstarc=p2;
            p1=p1->nextarc;
        }
    }
}