无向图以邻接矩阵存储,请算法描述深度优先遍历该图的非递归算法

无向图以邻接矩阵存储,请算法描述深度优先遍历该图的非递归算法。哪位大神可以帮忙写具体点用栈怎么实现?谢谢了!图片说明

伪代码说明
图片说明

深度优先遍历算法的非递归实现需要了解深度优先遍历的执行过程,设计一个栈来模拟递归实现中系统设置的工作栈,算法的伪代码描述为:
图片说明

深度优先遍历算法的非递归实现需要了解深度优先遍历的执行过程,设计一个栈来模拟递归实现中系统设置的工作栈,算法的伪代码描述为:

  假设图采用邻接矩阵作为存储结构,具体算法如下:

#include  
#include   
using namespace std;  
#define  MAX_NODE 12  
bool visited[MAX_NODE] ;  
int stack[ MAX_NODE] ;  
queue q;  
int Matric[MAX_NODE][MAX_NODE] =  
{  
    {-1,1,1,0,0,0,0,0,0,0,0,0},  
    {1,-1,1,0,1,1,0,0,0,0,0,0},  
    {1,1,-1,1,0,0,0,0,0,0,0,0},  
    {0,0,1,-1,1,0,0,0,0,0,1,1},  
    {0,1,0,1,-1,0,0,0,0,0,0,0},  
    {0,1,0,0,0,-1,0,0,0,0,1,0},  
    {0,0,0,0,0,0,-1,1,1,1,0,0},  
    {0,0,0,0,0,0,1,-1,0,0,0,0},  
    {0,0,0,0,0,0,1,0,-1,1,1,0},  
    {0,0,0,0,0,0,1,0,1,-1,0,1},  
    {0,0,0,1,0,1,0,0,1,0,-1,0},  
    {0,0,0,1,0,0,0,0,0,1,0,-1},   
};  
void DFS( int v)  
{  
    cout   

  

void DFS( int v)

{

cout << " v"<< v ;

int top = -1 ;

visited[v] = true ;

stack[++top] = v ;

while ( top != -1)

{

v = stack[top] ;

for (int i = 0 ; i < MAX_NODE ; i++)

{

if (Matric[v][i] == 1 &&!visited[i])

{

cout << " v" << i ;

visited[i] = true ;

stack[ ++top ] = i ;

break ;

}

}

if( i == MAX_NODE)

{

top -- ;

}

}

}

void BFS( int v)

{

int node = 0;

q.push(v);

visited[v] = true;

while( !q.empty())

{

node = q.front();

for ( int i = 0; i < MAX_NODE; i++ )

{

if ( Matric[node][i] == 1 && !visited[i])

{

visited[i] = true;

q.push(i);

}

}

cout <<" v" << node;

q.pop();

}

}

void Init()

{

int i = 0;  
for ( i = 0; i < MAX_NODE; i++)  
{  
    visited[i] = false;  
}  

}

int main()

{

Init();

DFS( 1 ) ;

cout << endl ;

Init();

BFS( 1 );

cout << endl;

Init();

DFS( 6 );

cout < return 0 ;
}