开放地址方法
#define Size 1001
typedef struct HTNode
{
int element;
bool Empty;
}HTNode;
typedef struct {
int MaxSize;
HTNode *ht;
} MyHashSet;
MyHashSet* myHashSetCreate() {
MyHashSet* Hash = (MyHashSet*)malloc(sizeof(MyHashSet));
Hash->MaxSize = Size;
Hash->ht = (HTNode*)malloc(sizeof(HTNode)* Hash->MaxSize);
int i;
for(i = 0;i<Hash->MaxSize;i++)
{
Hash->ht[i].element = -1;
Hash->ht[i].Empty = true;
}
return Hash;
}
void myHashSetAdd(MyHashSet* obj, int key) {
int i = key%obj->MaxSize;
int j = i;
do
{
if(obj->ht[j].element == key)
return;
else if(obj->ht[j].element == -1)
{
obj->ht[j].Empty = false;
obj->ht[j].element = key;
return;