我已经在C语言里做了几天的分离作业了。我了解函数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。

10-08 09:30