#include <iostream>
#include <bits/stdc++.h>
using namespace std;
typedef struct arc{
int adjvex;
struct arc *next;
}arcnode;
typedef struct vexnode{
int data;
int vnum;
struct arc *first;
}G;
int visit[100];
G* creatg(){
int m,n,x,y;
arcnode *p;
cin>>m>>n;
G *g=new G[m+1];
g[0].vnum=m;
for(int i=1;i<=m;i++){
cin>>x;
g[i].data=x;
g[i].first=NULL;
}
cin>>x>>y;
while(n--){
p=new arcnode;
p->adjvex=y;
p->next=g[x].first;
g[x].first=p;
if(n>0)
cin>>x>>y;
}
return g;
}
void dfs(G *g,int v){
arcnode *p;
p=g[v].first;
cout<<g[v].data<<" ";
visit[v]=1;
while(p!=NULL){
if(visit[p->adjvex]==0) dfs(g,p->adjvex);
p=p->next;
}
}
void dfsqq(G *g){
for(int j=1;j<=g[0].vnum;j++){
if(visit[j]==0) dfs(g,j);
}
}
void visitg(G g[]){
arcnode *p;
for(int i=1;i<=g[0].vnum;i++){
cout<<g[i].data<<":";
p=g[i].first;
while(p!=NULL){
cout<<p->adjvex<<" ";
p=p->next;
}
cout<<endl;
}
}
int main()
{
G *g=creatg();
visitg(g);
dfsqq(g);
//cout << "Hello world!" << endl;
return 0;
}
7039 邻接表 遍历邻接表 深度优先遍历 递归
最新推荐文章于 2024-02-16 15:06:07 发布