1. 程式人生 > >求有向圖兩點間所有簡單路徑

求有向圖兩點間所有簡單路徑

ALGraph G;
char way[G.vexnum];
way[0] = G.vertices[u].data;
Status Findway_on_DG(ALGraph G,int u,int v,int found){
    //在以鄰接表儲存的有向圖G中輸出從編號為u的頂點到編號為v的頂點的所有簡單路徑
    //前found個頂點是已經確定的頂點,初始呼叫Findway_on_DG(G,u,v,1)
    if(u == v){//找到一條簡單路徑
        for(i = 0;i < found;i++) cout << way[i];
        cout << endl;
        return OK;
    }//if
    for(p = G.vertices[u].firstarc;p;p = p->nextarc){
        if(!In_the_way(G.vertices[p->agjvex].data)){//保證簡單路徑
            way[found] = G.vertices[p->agjvex].data;
            Findway_on_DG(G,p->adjvex,v,found + 1);
        }//if
    }//for
    return OK;
}//Findway_on_DG