C 断续的麻烦
我已经在C语言中做了几天的分离作业了。我理解find函数(w/和w/o路径压缩),在对集合执行并集时使用函数链接中的秩。但是我在C语法方面有问题 我们必须创建一个包含该集合的秩和键的记录数组。因此,我的结构如下所示:C 断续的麻烦,c,arrays,C,Arrays,我已经在C语言中做了几天的分离作业了。我理解find函数(w/和w/o路径压缩),在对集合执行并集时使用函数链接中的秩。但是我在C语法方面有问题 我们必须创建一个包含该集合的秩和键的记录数组。因此,我的结构如下所示: typedef struct DisjointSet_t { int data; int key; } DisjointSet; 我的问题是声明数组来操作集合。初始化集合的数组时出现问题。以下是CreateSet代码的片段: static DisjointSet *S;
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中初始化类数组,我是否缺少了一些理解?变量S和t都是DisjointSet*类型,因此您应该能够将t赋值给S
if (S != NULL)
{
S = t;
}
此外,还需要将静态S初始化为NULL
static DisjointSet *S = NULL;
变量S和t都是DisjointSet*类型,所以您应该能够将t赋给S
if (S != NULL)
{
S = t;
}
此外,还需要将静态S初始化为NULL
static DisjointSet *S = NULL;
如果试图分配数组,则需要为所有数组元素分配空间:
malloc(sizeof(DisjointSet)*numElements)
此外,您还可以按照Jeremy Simon的描述分配S。如果您试图分配数组,则需要为所有数组元素分配空间:
malloc(sizeof(DisjointSet)*numElements)
此外,您还可以按照Jeremy Simon的描述分配S。嗯。。。与
malloc(sizeof(DisjointSet))
为DisjointSet类型的一个对象保留空间。要为20个对象分配空间,您需要乘以
malloc(20 * sizeof(DisjointSet))
一旦你有20个对象,在一个数组中,数组从0变为19。Hmmm。。。与
malloc(sizeof(DisjointSet))
为DisjointSet类型的一个对象保留空间。要为20个对象分配空间,您需要乘以
malloc(20 * sizeof(DisjointSet))
并且,一旦在一个数组中有20个对象,数组将从0变为19。全局数据将初始化为0。并不是说显式地这样做是个坏主意。全局数据被初始化为0。并不是说明确这样做是个坏主意。