在C中创建一个ADT

时间:2014-01-10 14:33:43

标签: c set structure adt

我正在尝试创建一个ADT。

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

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

据我所知,我首先需要创建一个对阵列实现和链表实现都通用的接口。

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

struct test {
    int x;
    char y;
};

那样的东西?或者假设我将整数设置为整​​数,数据结构将涉及什么?

非常感谢帮助。谢谢!

2 个答案:

答案 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,其中包含指向底部实施的链接。

祝你好运,编码愉快。如果您遇到困难,可以在此处询问,只需在下次发布代码即可。 :)