非常常见的图的深度优先,我随便画了个图。
解法1--邻接矩阵--无向图:
图对应的邻接矩阵为
代码:
结构体定义:
typedef struct {
int vexnum;
int edgenum;
int ed[max][max];
}G;
算法主题:
void dfs(G g, int v,int *visited) {
visited[v] = 1;
cout << v << "->";
for (int i = 0; i < g.vexnum; i++) {
if (visited[i] == 0 && g.ed[v][i] == 1)
dfs(g, i, visited);
}
cout << endl;
}
解法1--邻接表--有向图:
代码:
结构体定义:
typedef struct Enode {
int vex;
struct Enode* next;
}EN;
typedef struct Vnode {
int data;
struct Vnode* first;
}VN;
typedef struct {
VN vlist[max];
int vnum;
int ednum;
}ALG;
算法:
vod dfs_ALG(ALG* alg, int v, int* visted) {
EN* e;
cout << v >> "->";
visted[v] = 1;
e = alg->vlist[v].first;
while (e != NULL) {
if (visted[e->vex] == 0)
dfs_ALG(alg, e->vex, visted);
e = e->next;
}
}