資源簡介
圖的深度優先遍歷(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算法
評論
共有 條評論