邻接表(两种实现形式)

动态

struct node
{
    int u,v,w;
    node *next;
}*first[N];//一个节点相连的所有节点 构成一条链
void init()
{
    memset(first,NULL,sizeof(first));
}
void add(int u,int v,int w)
{
    node *p = new node;
    p->v = v;
    p->w = w;
    p->next = first[u];//类似于正序链表的插入
    first[u] = p;
}
for(node *p = first[u] ; p!=NULL ; p= p->next)
{
    int v = p->v;
    ///
}

静态

struct node
{
    int v,w,next;
}men[51*N];//每个节点最多与50个相连的话 这样就够了。。
int first[N],t = 0;
void init()
{
    t = 0;
    memset(first,-1,sizeof(first));
}
void add(int u,int v,int w)
{
    men[t].v = v;
    men[t].w = w;
    men[t].next = first[u];
    first[u] = t;//类似于链表的实现
    t++;
}
for(int i = first[u] ; i !=-1 ; i = men[i].next)
{
    int v = men[i].v;
    ///处理
}

 

posted @ 2012-08-01 21:54  _雨  阅读(200)  评论(0编辑  收藏  举报