图的存储结构定义见<图的生成算法>。
图的遍历一般可分为深度优先搜索(Depth First Search)和广度优先搜索(Breadth First Search)。分别对应二叉树的前序遍历算法和层序遍历算法,尽管有些不同之处。
1. 深度优先搜索
邻接表作为存储结构。
搜索算法如下:
/* sharedSource/DFS.c */
ArcNode * firstAdjvex(ALGraph *G, int v) {
return G->vertices[v].firstarc;
}
ArcNode * nextAdjvex(ArcNode *p) {
return p->nextarc;
}
void DFS(ALGraph *G, int v, int visited[]) {
int w;
ArcNode *p;