【发布时间】:2014-12-31 18:50:06
【问题描述】:
我收到错误:
无法将 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],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);
}
【问题讨论】:
-
在 c++ 中,使用
std::vector。 -
将
void dfs(int G[][n],int i,int visited[])更改为void dfs(int* G[],int i,int visited[]) -
memset(visited, 0, sizeof(visited))错了,scanf("%d", G[i][j])也是。还有你在读r和c干什么? -
不要转换
malloc()的返回值。另外,c++有new。好好利用它。 -
选择您的语言 C 或 C++。