链式前向星是一种数据储存结构,在这里主要说下它的c++代码理解。
用一个数组举例,
struct node{ int to,next,w; }edge[num]; void add(int a,int b,int c){ edge[++top].to=b; edge[top].w=c; edge[top].next=head[a];上一个a; head[a]=top; }
1 int sum; 2 struct st{ 3 int f,w,next; 4 }edge[222]; 5 void build(int a,int b,int c) //a,b两点,权值为c; 6 { 7 edge[++sum].f=b;// f终点; 8 edge[sum].w=c; 9 edge[sum].next=head[a];//上一条边的房间; 10 head[a]=sum;//新的房间号; 11 }//形成一条链;
这是一般存单向带权图,若是要无向,再来build(b,a,c),就OK了;
主要用于搜图。
遍历图; int c; scanf("%d",&c); for(int i=head[c];i!=0;i=edge[i].next){ printf('%d ->",i); printf(" %d",edge[i].f); }//遍历以c为起点的所有边;