我已经在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。