邻接表 算法竞赛进阶指南笔记
邻接表
什么是邻接表
邻接表是数组,数组里的元素是单链表。
数组模拟邻接表
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

浙公网安备 33010602011771号