• 大小: 3KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-05-24
  • 语言: C/C++
  • 标签: 深度优先  

资源简介

图的深度优先遍历(C语言数据结构)C语言的代码,可用visual C++进行编译

资源截图

代码片段和文件信息

#include
#define MAX_VERTEX_NUM 20
#define InfoType int
#define VertexType int
typedef enum{DGDNAGAN}GraphKind; 
Boolean visited [MAX];//访问标志数组
Status (*VisitFunc)(int v);
typedef struct ArcNode{
int adjvex;
struct ArcNode *nextarc; 
InfoType *info; 
     }ArcNode;
typedef struct VNode {
   VertexType data; 
   ArcNode *firstarc; 
}VNodeAdjList[MAX_VERTEX_NUM];
typedef struct {
  AdjList vertices;
  int vexnumarcnum;
  int kind; 
   }ALGraph;

void DFS (Graph Gint v){ 
visited[v]=TRUE;
VisitFunc(v);//访问第v个顶点
for(w =FirstAdjVex(Gv); w; w =NextAdjVex(G v w))
if(!visited[w]) DFS(Gw);
}
void DFSTraverse(Graph GStatus(*Visit)(int v)){ //对图G作深度优先遍历。
VisitFunc=Visit; //使用全局变量VisitFunc,使DFS不必设函数指针参数
    for(v=0;v       visited[v]=FALSE;   //访问标志初始化
for(v=0;v if( !visited[v]) DFS(Gv); 
}
int LocateVex(ALGraph GVertexType u)
{
int i;
for(i=0;i if(strcmp(uG.vertices[i].data)==0)
return i;
return -1;
}


int CreateGraph(ALGraph *G)
{
int ijk;
int w;
VertexType vavb;
ArcNode *p;

printf(“请输出图的类型(有向图0有向网1无向图2无向网3):\n“);
scanf(“%d“&(*G).kind);
printf(“璇疯緭

评论

共有 条评论