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 }