赞
踩
#include"stdio.h" #include"stdlib.h" typedef enum{FALSE,TRUE} Boolean; #define MaxVertexNum 10 /*定义最大顶点数*/ typedef int Vertex;/* 用顶点下标表示顶点,为整型 */ typedef struct{ int arcs[MaxVertexNum][MaxVertexNum]; /*邻接矩阵*/ int vexnum,arcnum; /*图中的顶点数vexnum和边数arcnum*/ }MGraph; /*用邻接矩阵表示的图的类型*/ Boolean visited[MaxVertexNum]; /* 顶点的访问标记 */ void CreatMGraph(MGraph *G);/* 创建图并且将Visited初始化为false;裁判实现,细节不表 */ void DFS(MGraph G,Vertex v); int main() { Vertex v; MGraph G; CreatMGraph(&G); scanf("%d", &v); printf("DFS from %d:",v); DFS(G,v); return 0; } /* 你的代码将被嵌在这里 */
void DFS(MGraph G,Vertex v)
{
printf(" %d",v);
visited[v]=1;
for(int w=0;w<G.vexnum;w++)//依次检查领接矩阵v所在行
{
if((G.arcs[v][w]!=0)&&(!visited[w]))
DFS(G,w);
}
}
#include"stdio.h" #include"stdlib.h" #define MAX_VERTEX_NUM 10 /*定义最大顶点数*/ typedef int Vertex; typedef struct ArcNode{ /*表结点*/ int adjvex; /*邻接点域*/ struct ArcNode *nextarc; /*指向下一个表结点*/ }ArcNode; typedef struct VNode{ /*头结点*/ Vertex data; /*顶点域*/ ArcNode *firstarc; /*指向第一个表结点*/ }VNode,AdjList[MAX_VERTEX_NUM]; /*AdjList是数组类型*/ typedef struct { AdjList vertices; /*邻接表中数组定义*/ int vexnum,arcnum; /*图中当前顶点数和边数*/ } ALGraph; /*图类型*/ typedef enum{FALSE,TRUE} Boolean; Boolean visited[MAX_VERTEX_NUM];/*定义标志向量,为全局变量*/ void CreatALGraph(ALGraph *G);/* 创建图并且将Visited初始化为false;裁判实现,细节不表 */ void DFS(ALGraph *G,int v); int main() { Vertex v; ALGraph G; CreatALGraph(&G); scanf("%d", &v); printf("DFS from %d:",v); DFS(&G,v); return 0; } /* 你的代码将被嵌在这里 */
void DFS(ALGraph *G,int i)
{
ArcNode *pre;
visited[i]=1;
printf(" %d",i);
for(pre=G->vertices[i].firstarc;pre!=NULL;pre=pre->nextarc)
{
if(visited[pre->adjvex]==0)
{
DFS(G,pre->adjvex);
}
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。