C++ 在C/C+中传递2d数组时出错+;
我得到一个错误: 无法将int**转换为int*[5] 在我的代码中。我知道如何将二维数组传递给函数,但我被困在这里了 该代码用于邻接矩阵上的深度优先遍历C++ 在C/C+中传递2d数组时出错+;,c++,arrays,matrix,graph,C++,Arrays,Matrix,Graph,我得到一个错误: 无法将int**转换为int*[5] 在我的代码中。我知道如何将二维数组传递给函数,但我被困在这里了 该代码用于邻接矩阵上的深度优先遍历 #include <iostream> #include <cstdlib> #include <cstring> #include <cstdio> using namespace std; #define m 5 #define n 5 void dfs(int G[][n],
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
using namespace std;
#define m 5
#define n 5
void dfs(int G[][n],int i,int visited[])
{
visited[i]=1;
int j;
for(j=0;j<n;j++)
{
if(!visited[j]&&G[i][j]==1)
dfs(G,j,visited);
}
}
int main()
{ int r,c,i;
printf("Enter Dimensions\n");
scanf("%d %d",&r,&c);
r = m; c = n;
int **G = (int **)malloc(r*sizeof(int*));
for(i=0;i<r;i++)
{
G[i] = (int *)malloc(c*sizeof(int));
}
printf("Enter the Matrix\n");
int j;
for(i=0;i<r;i++)
for(j=0;j<c;j++)
scanf("%d",G[i][j]);
int *visited = (int*)malloc(r*sizeof(int));
memset(visited,0,sizeof(visited));
dfs(G,0,visited);
}
#包括
#包括
#包括
#包括
使用名称空间std;
#定义m 5
#定义n5
无效dfs(int G[][n],int i,int已访问[])
{
访问量[i]=1;
int j;
对于(j=0;j我认为你需要的是这个,这是一个C解决方案,如果你想要C++,你应该使用<代码> STD::向量。
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
using namespace std;
void dfs(int **G, int i, int *visited, int c)
{
int j;
visited[i] = 1;
for(j = 0 ; j < c ; j++)
{
if((visited[j] == 0) && (G[i][j] == 1))
dfs(G, j, visited, c);
}
}
int main()
{
int r, c, i, j;
int **G;
int *visited;
printf("Enter Dimensions\n");
scanf("%d %d", &r, &c);
G = malloc(r * sizeof(*G));
if (G == NULL)
return -1;
visited = malloc(r * sizeof(*visited));
if (visited == NULL)
{
free(G);
return -1;
}
memset(visited, 0, r * sizeof(*visited));
printf("Enter the Matrix\n");
for(i = 0 ; i < r ; i++)
{
G[i] = malloc(c * sizeof(**G));
if (G[i] == NULL)
{
for (j = i - 1 ; j >= 0 ; --j)
free(G[j]);
free(G);
return -1;
}
for(j = 0 ; j < c ; j++)
scanf("%d", &(G[i][j]));
}
dfs(G, 0, visited, c);
/* now free */
free(visited);
for(i = 0 ; i < r ; i++)
free(G[i]);
free(G);
return 0;
}
我认为错误部分是函数定义:
你应该这样写:
void dfs(int *G[],int i,int visited[])
与其给第二维度赋予价值,不如让它保持如图所示
或者你也可以这样写:
void dfs(int **G,int i,int *visited)
< C++ >,使用< <代码> STD::Vector < /C> >更改<代码>空格DFS(int g[][n],int i,int [cc])>代码>空格DFS(int *g[],int i,int vcc[])<代码> MeMSET(访问,0,sieof(访问))< /C>错误,<代码> SCANF(“%d”,g[i][j])< C++ >代码> >代码> >代码> >代码> C++ >代码> > > > > < <代码> > < <代码> >。
void dfs(int *G[],int i,int visited[])
void dfs(int **G,int i,int *visited)