链式前向星的特点
- 能存储重边
- 存储效率高
- 占用内存少
- 删除操作不方便
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 const int N=1000005; 5 struct Edge{ 6 int to,next,w;///to终点,next下一条边的位置,w权值 7 }edge[N]; 8 int head[N];///head[u]存与顶点u连接的第一条边的位置 9 int cnt; 10 11 void init(){ 12 for(int i=0;i<N;i++){ 13 edge[i].next=-1;///-1表示没有下一条边 14 head[i]=-1;///-1表示没有相邻的边 15 } 16 cnt=0; 17 } 18 19 void addedge(int u,int v,int w){ 20 edge[cnt].to=v; 21 edge[cnt].w=w; 22 edge[cnt].next=head[u];///结点u上一次存的边的位置 23 head[u]=cnt++;///更新存边的位置 24 } 25 26 int main(){ 27 init(); 28 int u=1; 29 addedge(1,2,1); 30 addedge(1,2,3); 31 addedge(1,3,4); 32 addedge(1,4,5); 33 addedge(1,8,9); 34 for(int i=head[u];i!=-1;i=edge[i].next){ 35 cout<<edge[i].to<<" "<<edge[i].w<<endl; 36 } 37 }