资源简介
图的深度优先遍历(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(“璇疯緭
- 上一篇:c++实现的读写csv文件
- 下一篇:C++实现Apriori算法
评论
共有 条评论