邻接表模板

l邻接表的处理方法是这样:

l图中顶点用一个一维数组存储,当然,顶点也可以用单链表来存储,不过数组可以较容易地读取顶点信息,更加方便。

l图中每个顶点Vi的所有邻接点构成一个线性表,由于邻接点的个数不确定,所以我们选择用单链表来存储。

1 #include<iostream>
 2 using namespace std;
 3 struct node
 4 {
 5     int u;
 6     int v;
 7     int w;
 8     int next;
 9 }a[10001];
10 int head[1001];
11 int num=1;
12 void f(int p,int b,int c)
13 {
14     a[num].u=p;
15     a[num].v=b;
16     a[num].w=c;
17     a[num].next=head[p];
18     head[p]=num++;
19 }
20 int main()
21 {
22     int n,m;
23     cin>>n>>m;
24     for(int i=1;i<=n;i++)
25     head[i]=-1;
26     for(int i=1;i<=m;i++)
27     {
28         int p,b,c;
29         cin>>p>>b>>c;
30         f(p,b,c);
31     }
32     
33     cout<<"****************************"<<endl;
34     for(int k=1;k<=n;k++)
35     {
36         int i=head[k];    
37         cout<<"k:";
38         while(i!=-1)
39         {
40             cout<<"-->"<<a[i].v;
41             i=a[i].next;
42         }
43         cout<<"-->"<<-1<<" ";
44         cout<<endl;
45     }
46 
47     return 0;
48 }

相关推荐