/*定义一个邻接矩阵*/
#define MaxVertexNum 50
typedef struct{
VertexType vers[MaxVertexNum]; //存储 顶点信息
AdjMatrix arcs[MaxVertexNum][MaxVertexNum]; //邻接矩阵,假设为int 型
}MGraph;
-------------------------------------------------------------------------------------
/*邻接矩阵的深度优先搜索遍历*/
int visited[20];
void DFS(MGraph G , int i, int n){
int j;
printf("v%d->",i);
visited[i] = 1; //visited为全局变量存储对应顶点是否已被访问
for(j=0;j<n;j++)
if(G.arcs[i][j] != 0 && !visited[j]) //当i和j存在一条边,且j未被访问,则访问j;
DFS(G,j,n);
}
/*定义邻接表*/
#define MaxVertexNum 20
typedef char VertexType;
typedef struct node{
int adjvex;
struct node *next;
}EdgeNode;
typedef struct vnode{
VertexType vertex;
EdgeNode *link;
}VNode,Adjlist[MaxVertexNum];
typedef Adjlist ALGraph;
----------------------------------------
/*邻接表的深度优先搜索遍历算法*/
int visited[20];
void DFS(ALGraph AL, int i){
EdgeNode *p; int j;
printf("v%d->",i);
visited[i] = 1;
p = AL[i].link;
while(p != NULL){
j = p->adjvex;
if(!visited[j])
DFS(AL,j);
p = p->next;
}
}