我将我的信息存储在指向结构的指针数组中。换句话说,数组的每个元素都是一个指向链表的指针。
我不知道数组应该有多长,所以不是在我的 main() 函数中初始化数组,而是初始化双指针
struct graph** graph_array;
然后,一旦我获得了数组的长度,我尝试使用函数 GraphInitialize 初始化 graph_array 的每个元素:
int GraphInitialize(struct graph* *graph_array,int vertices)
{
struct graph* graph_array2[vertices+1];
graph_array = graph_array2;
int i;
for (i=0;i<vertices+1;i++)
{
graph_array[i] = NULL;
}
return 0;
}
但是由于某种原因,这不会将更新的 graph_array 返回给 main()。基本上,此函数在本地更新 graph_array,并且没有进行任何更改。结果,每当我尝试访问 graph_array 的元素时,它都会出现故障,因为它没有被初始化。我究竟做错了什么?
编辑:在与 Tom Ahh 的会议之后,我应该添加一些其他的东西,让这更加混乱。
我不直接从 main() 调用 GraphIntialize。相反,我从 main 调用 getdata(),并将指向 graph_array 的指针传递给 getdata,如下所示。
getdata(argc, argv, vertpt, edgept, &graph_array)
int getdata(int argc, char *argv[], int *verts, int *edges, struct graph* **graph_array)
然后 getdata 从我的输入文件中获取顶点数,并使用它来调用 GraphInitialize:
if ((GraphInitialize(&graph_array, *verts)) == -1)
{
printf("GraphCreate failed");
return 0;
}
这会导致错误:“预期为‘struct graph 3ASTERISKS’,但参数的类型为‘struct graph 4ASTERISKS’。