深度优先遍历-C语言递归
具体代码
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
#define INF 0
void DFSTraverse(int Arc[][MAXSIZE],int visit[MAXSIZE],int n,int count,int vexnum){
if(count>=vexnum){
exit(0);
}else{
if(visit[n]==0){
printf("%d ",n);
visit[n]=1;
count++;
}
int i;
for(i=1;i<=vexnum;i++){
if(Arc[n][i]!=0&&visit[i]==0){
DFSTraverse(Arc,visit,i,count,vexnum);
}
}
if(i>vexnum){
return;
}
}
}
int main(){
int vexnum=6;
int Arc[MAXSIZE][MAXSIZE],visit[vexnum+1];
for(int i=1;i<=vexnum;i++){
for(int j=1;j<=vexnum;j++){
Arc[i][j]=INF;
}
}
Arc[1][3] = 7;
Arc[4][6] = 7;
Arc[3][4] = 4;
Arc[2][3] = 2;
Arc[2][4] = 9;
Arc[5][6] = 6;
for(int i=1;i<=vexnum;i++){
visit[i]=0;
for(int j=1;j<=i;j++){
Arc[i][j]=Arc[j][i];
}
}
DFSTraverse(Arc,visit,1,0,vexnum);
}