gpt4 book ai didi

c - 在 C 中动态定义图

转载 作者:太空宇宙 更新时间:2023-11-04 03:33:01 29 4
gpt4 key购买 nike

我正在用 C 构建一个图(无向)。图节点是结构化的:

struct graphNode{
int val;
int neighborCount;
struct graphNode *neighbors[MaxN]; //this is adjacency list
}

现在,我必须动态初始化一个图的 n 个节点,或者我需要一个结构数组 graphNodes。然后,对于每个节点,我必须首先将邻居数组初始化为 NULL。我稍后会在添加节点时向其添加邻居。根据给定要求定义图形的正确方法是什么?我已经完成了以下操作,但我认为这是不正确的。我是 C 的新手。

struct graphNode *createGraph(int nodes){
struct graphNode *graph = malloc(nodes * sizeof(*graph));
for(int i=0;i<MAXN;i++){
graph[i]->n = malloc(MAXN * sizeof(struct graphNode *));
}
return graph;
}

最佳答案

由于 graphNode 结构包含邻居指针数组,您需要做的就是为 graphNode 数组分配空间,这就是第一个 malloc 可以。

鉴于您希望所有邻居指针都初始化为 NULL,我会将 malloc 更改为 calloc(自动归零内存)。生成的代码如下所示

struct graphNode *createGraph(int nodes){
struct graphNode *graph = calloc(nodes, sizeof(*graph));
return graph;
}

关于c - 在 C 中动态定义图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34710576/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com