图的邻接表表示法 (非指针实现)

图的邻接表表示法 (非指针实现)
/*邻接表储存图结构本质上是将图上的每条边都储存起来
我们希望通过边被添加的顺序序号来储存边
假设(1,2)是第一条被添加的边,(1,4)是第四条,(1,3)是第五条,他们是关联1的所有边
即edge[0].u=1;edge[0].v=2
edge[3].u=1;edge[3].v=4
edge[4].u=1;edge[4].v=5

我们希望
edge[0].next=-1;
edge[3].next=0;
edge[4].next=3;
head[1]=4;
从而实现链式顺序

若想要遍历1的所有邻接节点
cur=head[1]
while(cur!=-1){
    visit(edge[cur].v)          //对1的邻接节点进行某些操作
    cur=edge[cur].next;
}
*/

struct edge{
    
    int u,v;               //u,v都是点的序号
    int next;              
}[]

int head[];
memset(head,-1,sizeof(head));
int n; //此时edge的序号 void addedge(int x,int y){ //此时添加的是第n条edge edge[n].u=x; edge[n].v=y; edge[n].next=head[x]; head[x]=n; n++; } n=0; while(int i=0;i<E;i++){ addedge(x,y); }
图的邻接表表示法 (非指针实现)

图的邻接表表示法 (非指针实现)

上一篇:获取对话框内的自定义view


下一篇:母函数