2019年06月17日
阅读 618
评论 0
喜欢 0
深度优先遍历
int visited[MAXV]= {0};
void DFS(AGraph *G,int v) {
ArcNode *p;
visited[v]=1;
cout<<v<<" ";
p=G->adjlist[v].firstarc;
while(p!=NULL) {
if(visited[p->adjvex]==0)
DFS(G,p->adjvex);
p=p->nextarc;
}
}
广度优先遍历
void BFS(AGraph *G,int v) {
ArcNode *p;
int Qu[MAXV],front=0,rear=0;
int visited[MAXV];
int w,i;
for(i=0; i<G->n; i++)
visited[i]=0;
cout<<v<<" ";
visited[v]=1;
rear=(rear+1)%MAXV;
Qu[rear]=v;
while(front!=rear) {
front=(front+1)%MAXV;
w=Qu[front];
p=G->adjlist[w].firstarc;
while(p!=NULL) {
if(visited[p->adjvex]==0) {
cout<<p->adjvex<<" ";
visited[p->adjvex]=1;
rear=(rear+1)%MAXV;
Qu[rear]=p->adjvex;
}
p=p->nextarc;
}
}
cout<<endl;
}
暂无评论