Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 邻接矩阵图表示代码崩溃_C_Algorithm_Data Structures_Graph - Fatal编程技术网

C 邻接矩阵图表示代码崩溃

C 邻接矩阵图表示代码崩溃,c,algorithm,data-structures,graph,C,Algorithm,Data Structures,Graph,我为邻接矩阵图表示编写了以下代码,但代码不起作用。我认为第25行中存在一些问题,但我无法调试它。请在代码中指出问题。 谢谢 #包括 #包括 使用名称空间std; 结构图{ INTV; INTE; int**adj; }; 结构图*adjMatrixForGraph(整数顶点、整数边){ int i,j; 图*G=(结构图*)malloc(sizeof(结构图)); //图*G=新图(); if(!G){ coutE=边; G->adj=(int**)malloc(sizeof(G->V*G->V

我为邻接矩阵图表示编写了以下代码,但代码不起作用。我认为第25行中存在一些问题,但我无法调试它。请在代码中指出问题。 谢谢

#包括
#包括
使用名称空间std;
结构图{
INTV;
INTE;
int**adj;
};
结构图*adjMatrixForGraph(整数顶点、整数边){
int i,j;
图*G=(结构图*)malloc(sizeof(结构图));
//图*G=新图();
if(!G){
coutE=边;
G->adj=(int**)malloc(sizeof(G->V*G->V));
//G->adj=新整数*;
对于(i=0;iV;i++){
对于(j=0;jV;j++){
*(*(G->adj+j)+j)=0;
}
}/*
对于(int u=0;uE;u++){
cin>>i>>j;
G->adj[i][j]=1;
G->adj[j][i]=1;
}*/
返回G;
}
int main(){
图*G=NULL;
G=调整矩阵轮廓图(4,4);
返回0;
}

您不需要通过

G->adj =(int **) malloc(sizeof(G->V*G->V));
相反,你应该这样做

G->adj =(int **) malloc(G->V*sizeof(int*));
for (int i = 0; i < G->V; ++i) {
  *(G->adj+i) = (int*) malloc(G->V*sizeof(int));
}
G->adj=(int**)malloc(G->V*sizeof(int*);
对于(int i=0;iV;++i){
*(G->adj+i)=(int*)malloc(G->V*sizeof(int));
}

BTW,因为使用内存访问可能比索引计算慢,所以使用一维数组来模拟二维数组可能更有效。但是,这可以是另一个故事。

C++。它对我来说似乎是C……Malc,StReT,只是函数…我想最好是把标签C++改成C,而不是C++ + ERM…C没有<代码> IoSturi。
G->adj =(int **) malloc(G->V*sizeof(int*));
for (int i = 0; i < G->V; ++i) {
  *(G->adj+i) = (int*) malloc(G->V*sizeof(int));
}