2014-d-二-3
// 未确认
int visit[maxSize];
int stack[maxSize];
int j=0;
int u,pre;//第二个结点、用于指向出栈前的结点
int len;
void dfs(AGraph *G,int v)
{
ArcNode *p;//边结点
visit[v]=1;//标记访问
stack[++j]=v;//新访问结点入栈
if(v==u)//找到一条联通路径
{
if(j-1==len)//判断路径长度是否符合规定
{
//输出路径
}
visit[v]=0;
pre=v;
--j;//u顶点先出栈
for(k=j;k>0;k--)
{
p=G->adjlist[stack[k]].firstarc;
while(p!=NULL)
{
if(visit[p->adjvex]==0&&p-adjvex!=pre)
{
dfs(G,p->adjvex);
}
p=p->next;
}
}
}
p=G->adjlist[v].firstarc;
while(p!=NULL)
{
if(visit[p->adjvex]==0)
{
dfs(G,p->adjvex);
}
p=p->next;
}
}