typedef struct {
int vexs[5]; // 顶点
int arcs[5][5]; //领接矩阵
int vexnum, arcnum; //顶点数和边数
} AmGraph;
//region 深度优先算法
void AM_DFS(AmGraph *g, int v) { // v 表示第几个顶点
printf("%4d", g->vexs[v]);
visit[v] = 1; //表示已经访问过
for (int i = 0; i < g->vexnum; ++i) {
if (g->arcs[v][i] != 0 && visit[i] == 0) {
AM_DFS(g, i);
}
}
}
//endregion
//region 广度优先算法
void AM_BFS(AmGraph *g) {
Queue *q = NULL;
q = initQueue(q); // 初始化队列
enQueue(q, g->vexs[0]); //入队
visit[0] = 1; // 表示已经访问过
while (!isNULLQueue(q)) { // 不为空则继续遍历
int dq = deQueue(q); // 出队
printf("%4d", dq);
for (int i = 0; i < g->vexnum; ++i) {
if (visit[i] == 0 && g->arcs[dq][i] == 1) {
visit[i] = 1; // 标记已经访问过
enQueue(q, g->vexs[i]); //入队
}
}
}
}
//endregion
基于邻接矩阵的深度优先算法和广度优先算法
最新推荐文章于 2024-05-03 10:14:52 发布