void DFS_stack(Vertex& TestVertex)
{
vector<bool> v1;//利用数组来表示是否被遍历过并初始化
v1.resize(MAXNODE);
for (int i = 0; i < MAXNODE; i++)
{
v1[i] = false;
}
stack<int> s1;//利用栈s1来深度遍历图
//访问第一个元素然后入栈
s1.push(0);
cout << TestVertex.head[s1.top()].Name << " ";
v1[s1.top()] = true;
NODE* NodeMove;
//开始深度优先遍历
while (!s1.empty())
{
NodeMove = TestVertex.head[s1.top()].next;
while (NodeMove != NULL)
{
//如果该结点被遍历过
if (v1[NodeMove->pos] == true)
{
NodeMove = NodeMove->next;
}
else//如果没有被遍历过
{
v1[NodeMove->pos] = true;
cout << TestVertex.head[NodeMove->pos].Name << " ";
s1.push(NodeMove->pos);
}
}
s1.pop();
}
}