【发布时间】:2015-11-02 08:42:01
【问题描述】:
我已经为图形邻接矩阵编写了以下代码,但遇到了分段错误错误。我认为 malloc 语句有问题,但我不知道是什么。我该如何解决这个问题?
#include<stdio.h>
#include<stdlib.h>
struct Graph
{
int V;
int E;
int **adj;
};
struct Graph *adjMatrix()
{
int i,u,v;
struct Graph *G=(struct Graph*)malloc(sizeof(struct Graph));
printf("Enter vetrices and edge\n");
scanf("%d %d",&G->V,&G->E);
G->adj=malloc(sizeof(1)*((G->V) * (G->V)));
for(u=0;u<(G->V);u++)
{
for(v=0;v<(G->V);v++)
{
G->adj[u][v]=0;
}
}
for(i=0;i<(G->E);i++)
{
printf("Enter source vertces and dest vertix ");
scanf("%d %d",&u,&v);
G->adj[u][v]=1;
G->adj[v][u]=1;
}
return G;
}
int main()
{
struct Graph *T=adjMatrix();
printf("%d",T->adj[0][0]);
return 0;
}
【问题讨论】:
-
5 和 4。只要我输入这个,就会出现分段错误。
-
为什么你认为是 malloc 语句?你调试过吗?
-
没有。但我看不到任何其他有问题的代码段。而分段错误通常是由于内存分配错误引起的吧?
标签: c data-structures graph