邻接矩阵:
#include <stdio.h>
#define MAXV 10
#define INF 0
int n=5,G[MAXV][MAXV]={ { 0, 1, 1, 0, 0 },
{ 0, 0, 1, 0, 1 },
{ 0, 0, 1, 0, 0 },
{ 1, 1, 0, 0, 1 },
{ 0, 0, 1, 0, 0 }};
int vis[MAXV]={0};
void DFS(int v,int depth){
vis[v]=1;
printf("%d ",v+1);
for(int u=0;u<n;u++){
if(vis[u]==0&&G[v][u]!=INF) {
DFS(u, depth + 1);
}
}
}
void DFSTrave(){
for(int i=0;i<n;i++){
if(vis[i]==0){
DFS(i,1);
}
}
}
int main(){
DFSTrave();
return 0;
}
邻接表:
#include <stdio.h>
#define MAXV 10
typedef struct ArcNode{
int adjvex;
struct ArcNode *next;
}ArcNode;
typedef struct VNode{
int data;
ArcNode *first
}VNode,AdjList[MAXV];
typedef struct {
AdjList vertices;
int vexnum,arcnum;
}ALGraph;
ALGraph G;
int vis[MAXV]={0};
void DFS(int v,int depth){
vis[v]=1;
printf("%d ",v);
ArcNode *p=G.vertices[v].first;
while(p){
int u=p->adjvex;
if(vis[u]==0){
DFS(u,depth+1);
}
p=p->next;
}
}
void DFSTrave(){
for(int i=0;i<G.vexnum;i++){
if(vis[i]==0){
DFS(i,1);
}
}
}
int main(){
DFSTrave();
return 0;
}