Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C中创建集合ADT_C_Set_Structure_Adt - Fatal编程技术网

在C中创建集合ADT

在C中创建集合ADT,c,set,structure,adt,C,Set,Structure,Adt,我正在尝试创建一个ADT 它是一组动态有限元。它必须使用数组和链表来实现 一些操作包括add(set,x)和remove(set,x) 我知道我首先需要创建一个接口,该接口对于数组实现和链表实现都是通用的 但是,我不确定这种数据类型的结构。我应该包括什么 struct test { int x; char y; }; 像这样的?或者假设我将集合设为整数的独占,那么数据结构将涉及什么 非常感谢您的帮助。谢谢 这是结构的原理,您可以将所有类型的变量放入其中 我想你应该创建一个int

我正在尝试创建一个ADT

它是一组动态有限元。它必须使用数组和链表来实现

一些操作包括
add(set,x)
remove(set,x)

我知道我首先需要创建一个接口,该接口对于数组实现和链表实现都是通用的

但是,我不确定这种数据类型的结构。我应该包括什么

struct test {
    int x;
    char y;
};
像这样的?或者假设我将集合设为整数的独占,那么数据结构将涉及什么


非常感谢您的帮助。谢谢

这是结构的原理,您可以将所有类型的变量放入其中

我想你应该创建一个int数组。 声明如下:

int tab["number of int you want"];
然后像这样访问它:

tab["number of case of the int you want to access"];

因为这是为学校准备的,我不会给你们一个实现,但我会给你们指出正确的方向。使用数组和列表创建“哈希表”。有关详细信息,请参阅

为了简单起见,我们假设它是一组整数。 本质上,您需要一个包含N个“bucket”的数组
哈希表
,即列表。要添加元素
x
,您需要执行
hash_table[hash(x)%N]
以获取“bucket”(列表)
x
应该进入的,如果它不在列表中,则将其添加到该列表中

要删除
x
,请执行
hash_table[hash(x)%N]
以获取您的bucket,并删除
x
(如果存在)

如果您可以实现这些功能,
search(set,x)
就很简单了。您还可以尝试实现
union(setA,setB)
intersect(setA,setB)
difference(setA,setB)
isSubset(setA,setB)
,等等。您可能还需要仔细阅读,并查看包含底部实现链接的条目


祝你好运,快乐。如果你被卡住了,在这里提问总是可以的,所以下次只需发布代码即可。:)

如果我只做一组数字,我就会失去结构的意义,不是吗?结构就像一种变量。你可以把“int”,“char”等。。。然后在代码中查看或修改这个结构的值。哦,是的,很有意义。基本上,数组就是一种结构。不,它真的不同!如果需要,可以创建结构数组。结构是一种变量,您可以在其中放置所需的所有变量。数组是一种保存变量的方法。我明白了。因此,在创建这个只将数字存储为元素的集合ADT时,我还必须创建一个数据结构。结构应该只包含一个int数组?或者我应该包括任何其他变量,指向结构的指针,也许。。。?谢谢你的回复,顺便说一句!需要更多信息。您是在考虑数学意义上的有限集(其中允许重复元素),还是像Python/Java/等中那样的
set()
(只有唯一的元素)?您正在尝试选择一个数据结构来优化
add()
remove()
操作,或者像
union()
intersect()
这样的其他操作吗?为什么选择数组和链表?你有很多数据结构可供选择,为什么“必须”用它们来实现呢?我是从数学的角度来思考的。基本上,我所要做的就是添加或删除一个元素,然后尝试一些函数,比如检查元素是否存在()、联合()、交集()、基数()……基本上,我需要创建一个动态集合ADT,并使用数组和链表实现它,但我真的很困惑,不确定从哪里开始。我的问题是,你必须使用C还是可以使用C++?您必须使用数组/列表,还是可以使用树/哈希表?这是家庭作业吗?是的,这是我在学校做的一个项目。必须使用C,仅限于数组和链表。Aaa,非常感谢!真的很有帮助,信息丰富。我会想办法的。谢谢!