图总结

图的遍历。

结构体定义

1
2
3
4
5
6
7
8
9
10
11
12
13
14
typedef struct EdgeNode {
int adjvex;
struct EdgeNode *next;
}EdgeNode;

typedef struct VertexNode {
char data;
EdgeNode *firstedge;
}VertexNode, AdjList[MAXVEX];

typedef struct {
AdjList adjList;
int numVertexes, numEdges;
}GraphAdjList;

邻接表的深度优先递归算法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void DFS(GraphAdjList GL, int i) {
visited[i] = true;
print(GL->adjList[i].data);
EdgeNode *p = GL->adjList[i].firstedge;

while (p) {
if ( !visited[p->adjvex] )
DFS(GL, p->adjVex);
p = p->next;
}
}

void DFSTraverse(GraphAdjList GL) {
for (i=0;i<GL->numVertexes;i++)
visited[i] = false;
for (i=0;i<GL->numVertexes;i++)
if (!visited[i])
DFS(GL, i);
}

个人GitHub: http://github.com/icodeu

CSDN博客:http://blog.csdn.net/icodeyou

个人微信号:qqwanghuan 技术交流

image