void DFS_queue(Vertex & TestVertex) { queue<int> Q1; //创建一个队列来存储节点对应在head的位置 vector<bool> V1; //创建一个数组来表示该节点是否被遍历过 V1.resize(MAXNODE); for (int i = 0; i < MAXNODE; i++)//初始化所有节点没有被访问过 { V1[i] = false; } Q1.push(0); int location; NODE* NodeMove; while (!Q1.empty()) { location = Q1.front();//获取队列的第一个数据值 NodeMove = TestVertex.head[location].next; while (NodeMove != NULL) { Q1.push(NodeMove->pos); NodeMove = NodeMove->next; } //将第一个出队,如果没有输出过就输出,输出过就直接出队 if (V1[location] == false) { cout << " " << TestVertex.head[location].Name; V1[location] = true; Q1.pop(); } else { Q1.pop(); } } }