图的储存(数组模拟临街表)

储存:树的储存可以用图来存储,图的数组模拟邻接矩阵:小兵应该先武装好自己,然后再加入队伍,队长负责周转(管最前面一个)。

遍历:遍历的话也好遍历,管好头尾,头就是队长,尾就是-1。

 图的储存(数组模拟临街表)_i++

图的储存(数组模拟临街表)_图_02



1 #include <iostream>
2 #include <cstring>
3 using namespace std;
4 struct edge_node{
5 int to;
6 int next;
7 }edge[100];
8 int main(){
9 freopen("edge.txt","r",stdin);
10 int vertex[10];
11 memset(vertex,-1,sizeof(vertex));
12 int n;
13 cin>>n;
14 int cnt=1;
15 for(int i=1;i<=n;i++){
16 int a,b;
17 cin>>a>>b;
18 //武装自己
19 edge[cnt].to=b;
20 edge[cnt].next=vertex[a];
21 vertex[a]=cnt++;
22 }
23 cout<<"---------------输出每个节点的存储情况---------------"<<endl;
24 cout<<"edge[i].to"<<" "<<"edge[i].next"<<endl;
25 for(int i=1;i<=6;i++){
26 cout<<i<<" "<<edge[i].to<<" "<<edge[i].next<<endl;
27 }
28 //输出每个节点的边
29 cout<<"---------------输出每个节点的边---------------"<<endl;
30 for(int i=1;i<=6;i++){//顶点
31 cout<<i<<": ";
32 for(int j=vertex[i];j!=-1;j=edge[j].next){//遍历边
33 cout<<edge[j].to<<" ";
34 }
35 cout<<endl;
36 }
37 return 0;
38 }


图的储存(数组模拟临街表)_微信_03

图的储存(数组模拟临街表)_i++_04