数组模拟邻接表

方法一,结构体+数组模拟

 1 void add(int form,int to,int w);
 2 int num=0;
 3 struct node
 4 {
 5     int to,dis,next;
 6 };
 7 node edge[maxn];//模拟链表结构 
 8 int head[maxn];//存储头 
 9 int main()
10 {
11     for(int i=1;i<=m;i++)
12     {
13         cin>>u>>v>>w;
14         add(u,v,w);
15     }
16  } 
17  void add(int form,int to,int w)
18  {
19      //模拟头插法 
20      num++;
21      edge[num].next=head[form];
22      edge[num].to=to;
23      edge[num].dis=w;
24      head[form]=num;
25  }

方法二,数组模拟

 1 int u[maxn],v[maxn],w[maxn];
 2  int next[maxn],first[maxn];
 3  int main()
 4  {
 5      for(int i=1;i<=m;i++)
 6      {
 7          cin>>u[i]>>v[i]>>w[i];
 8          //终点:v[],权值:w[]
 9         //next,first仅充当链表索引,i为链接依据 
10          next[i]=first[u[i]];
11          first[u[i]]=i;
12       } 
13  }

 参考:

(54条消息) 邻接表图文详解_sunday_soft的博客-CSDN博客_邻接表

posted @ 2022-05-01 16:10  格蕾  阅读(126)  评论(0)    收藏  举报