資源簡介
圖的深度優(yōu)先遍歷(C語言數(shù)據(jù)結(jié)構(gòu))C語言的代碼,可用visual C++進行編譯
代碼片段和文件信息
#include
#define?MAX_VERTEX_NUM?20
#define?InfoType?int
#define?VertexType?int
typedef?enum{DGDNAGAN}GraphKind;?
Boolean?visited?[MAX];//訪問標(biāo)志數(shù)組
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作深度優(yōu)先遍歷。
VisitFunc=Visit;?//使用全局變量VisitFunc,使DFS不必設(shè)函數(shù)指針參數(shù)
????for(v=0;v ???????visited[v]=FALSE;???//訪問標(biāo)志初始化
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有向網(wǎng)1無向圖2無向網(wǎng)3):\n“);
scanf(“%d“&(*G).kind);
printf(“璇瘋緭
評論
共有 條評論