我正在尝试创建一个ADT。
它是一组动态有限元素。它必须使用数组和链表实现。
有些操作包括add(set, x)
和remove(set, x)
。
据我所知,我首先需要创建一个对阵列实现和链表实现都通用的接口。
但是,我不确定这种数据类型的结构。我应该包括什么?
struct test {
int x;
char y;
};
那样的东西?或者假设我将整数设置为整数,数据结构将涉及什么?
非常感谢帮助。谢谢!
答案 0 :(得分:0)
这是一个结构的原理,你可以把你想要的所有类型的变量放在其中..
我认为你想创建一个int数组。 声明如下:
int tab["number of int you want"];
然后像这样访问:
tab["number of case of the int you want to access"];
答案 1 :(得分:0)
由于这是针对学校的,我不打算给你一个实施,但我会指出你正确的方向。使用数组和列表尖叫'哈希表'。有关一些好的信息,请参阅this answer。
为简单起见,我们假设它是一组整数。
基本上,你想要一个N'桶的数组hash_table
,即列表。要添加元素x
,您需要执行hash_table[hash(x) % N]
以获取“存储区”(列表)x
,并将其添加到该列表中(如果它尚未在列表中)。 / p>
要删除x
,请执行hash_table[hash(x) % N]
以获取您的存储桶,并删除x
(如果存在)。
如果你可以实现这些,search(set, x)
是微不足道的。您还可以尝试实施union(setA, setB)
,intersect(setA, setB)
,difference(setA, setB)
,isSubset(setA, setB)
等。您可能还想仔细阅读the Wikipedia article on the Set ADT,并查看条目The Algorithm Design Manual,其中包含指向底部实施的链接。