对于我的代码,我正在检查图形是否使用DFS连接。到目前为止,它使用用户输入。我希望它不将用户输入用于2D数组(矩阵)。我将如何对isConnected()
的这一部分进行修复(请参见下文),以便可以使用全局2D数组b而不是全局2D数组a
printf("\nEnter adjacency matrix : \n");
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&a[i][j]);
这是我到目前为止所拥有的
int a[20][20],reach[20],n;
int b[4][4] = { {0,1,1,1},{0,0,1,0},{0,0,0,0},{0,0,0,1}};
void dfs(int v){
int i;
reach[v]=1;
for(i=1;i<=n;i++)
if(a[v][i]&&!reach[i]){
printf("\n%d->%d",v,i);
dfs(i);
}
}
void isConnected(){
int i,j,count=0;
printf("\n no of vertices is 4 ");
// scanf("%d",&n);
int n = 4;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++){
reach[i]=0;
a[i][j]=0;
}
printf("\nEnter adjacency matrix : \n");
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&a[i][j]);
dfs(1);
for(i=1;i<=n;i++)
if(reach[i])
count++;
if(count==n)
printf("\nGraph is connected.");
else
printf("\nGraph is disconnected.");
}
为了节省一些混乱,我取出main,它只是调用该函数以检查其是否连接