gpt4 book ai didi

为集合创建动态数组

转载 作者:行者123 更新时间:2023-11-30 18:13:55 26 4
gpt4 key购买 nike

我需要创建以下内容:通用的有限但动态的集合,初始化为容纳任意数量的任意类型的项目没有任何特定的顺序,也没有重复的值。

因此,我首先创建一个结构体,其中包含一个数组(基本上是集合)和集合的名称:

typedef struct set{

char name; /* A unique identifier for every set */
int value[]; /* A dynamic array of integers; the set */

} Set;

我将其放入头文件中以用作接口(interface)。

我现在陷入了实现层面。我需要创建一个函数,基本上:

create()

但是,我不确定如何使 value[] 成为动态数组。我知道我必须使用 malloc,但我有点困惑。

我尝试了这段代码,但没有成功:

Set * create()
{
Set S;
int n;
int * ptd;

S.value * ptd = (int *) malloc(n * sizeof(int));
}

任何帮助将不胜感激。谢谢!

最佳答案

重新定义集合以具有动态指针:

typedef struct set{

char name; /* A unique identifier for every set */
int *value; /* A dynamic array of integers; the set */
int numberOfValues; /* The number of actual values currently in the set */
int sizeOfArray; /* The number of elements allocated (must be >= numberOfValues) */

} Set;

create 需要一个返回值,并且它还需要动态分配集合结构本身。修改create如下:

Set * create()
{
Set *S;

S = malloc(sizeof(Set));
S->name = NULL;
S->numberOfValues = 0;
S->sizeOfArray = 32;
S->value = malloc(S.sizeOfArray * sizeof(int));
return S;
}

每次向集合添加内容时,都必须检查 S.sizeOfArray 是否足够大以容纳新元素。如果没有,您将必须重新分配 S.value 并将新大小存储在 S.sizeOfArray 中。另外,请确保每次向集合中添加元素时都递增 S.numberOfValues!

关于为集合创建动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20955605/

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