邻接矩阵版
天津大学2013算法设计题
一个用邻接矩阵存储的有向图,请用栈实现该图的深度优先搜索算法
(啊啊啊啊啊啊啊啊我看错题了,我把他当非递归写了,明明直接默递归代码就可以了
关键代码:
#define maxsize 100
typedef struct{
int virticle[maxsize];
int numver,numedg;
int Edge[maxsize][maxsize];
}MGraph;
void nonDFS(MGraph G,int v)
{
int stack[maxsize];// 定义栈
int visit[maxsize]={0};// 访问标记数组
int top=-1;
// 初始节点入栈并标记
cout<<v<<" ";
stack[++top]=v;
visit[v]=1;
while(top!=-1)
{
int node=stack[top];
bool flag =false;
for(int i=0;i<G.numver;i++)
{
if(G.Edge[node][i]==1&&visit[i]==0) // 如果找到未访问的邻接点
{
stack[++top]=i;// 入栈
visit[i]=1;
cout<<i<<" ";
flag=true;
break; // 找到一个未访问的节点后退出内循环
}
}
if(flag==false)// 如果没有未访问的邻接点,出栈
top--;
}
}
邻接表版
关键代码:
typedef struct ANode{
int adjvex;//边所指向节点的位置
struct ANode *nextarc;
}ANode,*Node;//边节点结构体
typedef struct{
int da