首页 新闻 赞助 找找看

关于图输出顶点U到V的所有简单路径问题?

0
悬赏园豆:5 [已关闭问题] 关闭于 2019-11-14 22:12
void FindPaths(ALGraph *G,int u,int v,int path[],int d)  
//d是到当前为止已走过的路径长度,调用时初值为-1  
{  
    int w,i;  
    ArcNode *p;  
    visited[u]=1;  
    d++;            //路径长度增1  
    path[d]=u;              //将当前顶点添加到路径中  
    if (u==v && d>1)            //输出一条路径  
    {  
        printf("  ");  
        for (i=0; i<=d; i++)  
            printf("%d ",path[i]);  
        printf("\n");  
    }  
    p=G->adjlist[u].firstarc; //p指向u的第一条边  
    while(p!=NULL)  
    {  
        w=p->adjvex;     //w为u的邻接顶点  
        if (visited[w]==0)      //若顶点未标记访问,则递归访问之  
            FindPaths(G,w,v,path,d);  
        p=p->nextarc; //找u的下一个邻接顶点  
    }  
    visited[u]=0;   //恢复环境  
}  

想请问以上代码中每次递归d都会d++,所以path是不断变长的,那怎么会得到正确的结果呢?

Wb同学在此的主页 Wb同学在此 | 初学一级 | 园豆:7
提问于:2019-11-14 22:09
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册