c - DisjointSet 的问题

标签 c arrays

几天来,我一直在用 C 编写 DisjointSet 作业。我了解函数 find(w/和 w/o 路径压缩),在对集合执行并集时在函数链接中使用等级。但我对 C 语法有疑问。

我们必须创建一个记录数组,其中包含该集合的排名和键。所以我的结构看起来像:

typedef struct DisjointSet_t {
  int data;
  int key;
} DisjointSet;

我的问题是声明数组来操作集合。我为集合初始化数组有问题。这是 CreateSet 代码的片段:

static DisjointSet *S;

void CreateSet(int numElements){  
  DisjointSet *t;

  if (numElements > 0){
    t = (DisjointSet *)malloc(sizeof(DisjointSet));
    }

  if(S != NULL){
    S = t[numElements+1];
  }  
}

如果我用 Java 实现它,我认为它会更容易一些。我该如何改进呢?我是否遗漏了有关如何在 C 中初始化类数组的理解?

最佳答案

嗯……用

malloc(sizeof(DisjointSet))

您为 DisjointSet 类型的一个对象保留空间。要为 20 个对象分配空间,您需要乘以 ...

malloc(20 * sizeof(DisjointSet))

并且,一旦你在一个数组中有 20 个对象,数组就会从 0 到 19。

关于c - DisjointSet 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4129682/

相关文章:

c - 从 C 文本文件中提取随机单词时出现段错误

c - 使用 printf 时的警告

ios - 尝试使用 NSUserDefaults() 保存数组时出错

arrays - 创建一个按 block 连接 block 的矩阵,如楼梯 MATLAB

字符转换

c - Arduino:union/struct 属性返回错误值

我们可以在 C 中从同一个结构中获得两个或多个 typedef 吗?

python - 如何将python字符串和整数数组相乘

c - 将类型定义的二维结构数组作为函数参数传递

java - 对象数组和字符串数组有什么区别