邻接表 算法竞赛进阶指南笔记

邻接表

什么是邻接表

邻接表是数组,数组里的元素是单链表。

数组模拟邻接表

head[i]是下标为i的单链表的头结点,内容是:指向第一个节点的指针(下标)。
tot为链表申请空间时的指针(下标),
v[tot]节点的值,r[tot]节点的下一个节点。

代码

int head[N],r[N],v[N],tot;t//有向图中ver代表角,可以新添加一个edge代表边的权值
void init(){
    tot = 1;
}
void add(int x,int y,int z){//插入
    r[tot] = r[head[x]],v[tot] = z,r[head[x]] = tot,tot++;
}
void search(int x,int y){//遍历
    for(int i = head[x];i!=0;i=next[i]){
        if(v[i]==y)
            //找到一条x,y的边。
    }
}

用途

  • 储存图
  • hash
posted @ 2020-04-05 15:05  dachengqian  阅读(176)  评论(0)    收藏  举报