設計求無向圖中通過某定點的簡單回路的算法(C語言描述)本人用鄰接矩陣表示定點間有無邊的關系;然后用廣度遍歷鄰接矩陣;并用路徑矩陣紀錄路徑,但是想用深度遍歷路徑矩陣輸出簡單回路時遇到問題!#include <stdio.h> /*建立無向網絡*/#define n 4 /*結點個數*/#define e 6 /*邊數*/typedef int vextype;typedef int adjtype;typedef struct graph /*定義結構體格式*/{vextype vexs[n]; /*定點數組*/ adjtype arcs[n][n]; /*邊權數組*/}graph; graph g; int a; int x=1;creatgraph(graph *ga){int i,j,k; float w; printf("input vex information!\n"); for(i=0;i<n;i++) { scanf("%d",&ga->vexs[i]);} /*輸入定點數組信息*/ for(i=0;i<n;i++) for(j=0;j<n;j++) ga->arcs[i][j]=-1; /*初始化邊權矩陣*/ for(k=0;k<e;k++) {printf("input arcs information!\n"); scanf("%d%d%",&i,&j); ga->arcs[i-1][j-1]=1; ga->arcs[j-1][i-1]=1;}} /*深度優先搜索鄰接矩陣*/int p[n][n]; /*p[n][n]是路徑矩陣*/creatp(){int i,j; for(i=0;i<n;i++) for(j=0;j<n;j++) if( cs[i][j]==1) {p[i][j]=j; cs[i][j]=-1; cs[j][i]=-1; }}dfs(int i) /*dfs 函數 編亂了*/{int j,t=1; for(j=0;j<n;j++) {if(p[i][j]!=0) {if(p[i][j]==a) {visited[x]=a; printf("node:%d",visited[0]); while(visited[t]!=a) {printf("->%d",visited[t]);t++;} printf("->%d\n",visited[t]);}} else {visited[x]=p[i][j];x++; dfs(j);} }}main(){graph *ga;int i,j,a; ga=&g; for(i=0;i<n;i++) for(j=0;j<n;j++) p[i][j]=0; creatgraph(ga); creatp(); printf("input vi:"); scanf("%d",&a); dfs(a-1); printf("\n"); getch();}