問題:
- /*
- * Copyright (c)2016,煙臺大學計算機與控制工程學院
- * All rights reserved.
- * 文件名稱:項目3.cpp
- * 作 者:樑凱
- * 完成日期:2016年11月16日
- * 版 本 號:v1.0
- *問題描述:實現圖遍歷算法,分別輸出如下圖結構的深度優先(DFS)遍歷序列和廣度優先遍歷(BFS)序列。
- *輸入描述:無
- *程序輸出:測試數據
- */
測試用圖如下:
1.深度優先遍歷——DFS
程序中graph.h是圖存儲結構的算法庫中的頭文件,詳見圖算法庫。
main.cpp代碼:
- #include "graph.h"
- int visited[MAXV];
- void DFS(ALGraph *G, int v)
- {
- ArcNode *p;
- int w;
- visited[v]=1;
- printf("%d ", v);
- p=G->adjlist[v].firstarc;
- while (p!=NULL)
- {
- w=p->adjvex;
- if (visited[w]==0)
- DFS(G,w);
- p=p->nextarc;
- }
- }
- int main()
- {
- int i;
- ALGraph *G;
- int A[5][5]=
- {
- {0,1,0,1,0},
- {1,0,1,0,0},
- {0,1,0,1,1},
- {1,0,1,0,1},
- {0,0,1,1,0}
- };
- ArrayToList(A[0], 5, G);
- for(i=0; i<MAXV; i++) visited[i]=0;
- printf(" 由2開始深度遍歷:");
- DFS(G, 2);
- printf("\n");
- for(i=0; i<MAXV; i++) visited[i]=0;
- printf(" 由0開始深度遍歷:");
- DFS(G, 0);
- printf("\n");
- return 0;
- }
運行結果: