int queue[MAX];
int front = -1;
int rear = -1;
bool visited[MAX] = { false };
void Traverse(Graph* G, int index,bool visited[])
{
for (int i = 0; i < G->vexnum; i++)
{
if (G->matrix[index][i] != 0 && !visited[i])
{
visited[i] = true;
printf("%s",G->vertex[i]);
queue[++rear] = i;
}
}
}
//邻接矩阵的广度优先遍历
void BFS(Graph* G, int index)
{
visited[index] = true;
printf("%s", G->vertex[index]);
Traverse(G, index, visited);
while (front != rear)
{
Traverse(G, queue[++front], visited);
}
}
int main(int argc, char* argv[])
{
Graph* g;
CreateGraph(g);
PrintGraph(g);
BFS(g, 0);
DestroyGraph(g);
return 0;
}