思路:查找入口节点,查找该节点的第一个相邻节点,查找该相邻节点的第一个相邻节点,依次向下查找… …,所有节点被巡视,算法结束,结束。
#包含
#define MAX 100
typedef struct Graph{
int vn;
char vt[MAX];
int edge[MAX][MAX];
(df;
int size=1;
intgetindex(chartar,char sor[],int n );
voidDFS(charv0,int n,int edge[][MAX],char vt[],int visited[] );
int main ()。
int visited[10]={0};
df dfs;
char ch='健忘的愿望/pscanf('%d ',dfs.vn );
ch=getchar (;
int i=0,j=0;
for(I=0; i dfs.vn; I ) {
scanf('%c ',dfs.vt[i] );
ch=getchar (;
}
for(I=0; i dfs.vn; I ) {
for(j=0; j dfs.vn; j ) {
scanf('%d ',dfs.edge[i][j] );
}
}
printf((n深度优先搜索: (n );
返回0;
}
intgetindex(charv0,char vt[],int n ) {
int i=0;
for(I=0; i n; I ) {
if(v0==vt[I] ) return i;
}
}
voidDFS(charv0,int n,int edge[][MAX],char vt[],int visited[] ) {
int i=0,j=0;
int index=0;
index=getindex(v0,vt,n );
if (索引==-1 ) {
printf ('节点不存在!' );
返回;
}
if(size==n ) printf )“%c”,vt[index];
ELSEprintf('%c-',vt[index] );
size;
visited[index]=1;
for(I=0; i n; I ) {
if (edge [ index ] [ I ]==1visited [ I ]==0) {
布雷克;
}
}
for(I=0; i n; I ) {
if (edge [ index ] [ I ]==1visited [ I ]==0) {
布雷克;
}
}
}