这个哈希表如果出现哈希冲突,用的是闭散列的方法,继续往后面插入
这些代码主要实现的功能有:
创建哈希表,然后实现哈希表的插入删除和查找,是一个通用的哈希表
插入时,如果当前位置的statu为valid,表示该位置已经有元素了,就不能插入了
否则,无论是invalid还是empty表示都可以插入,invalid表示该位置元素被删除了
删除一个元素时,如果当前元素位置为valid,而且和要删除的元素一样,就可以删除,
删除完成之后把状态标志位置为invalid
查找,跟上面差不多,只需要把具体条件想清楚就好了。
代码如下:
HashTable.h
#pragma once
#include<stddef.h>
#define HASHTABLEMAX 1000
typedef int HashType;
typedef int ValueType;
typedef enum Status{
Empty,
Valid,
Invalid
}Statu;
typedef size_t (*HashFunc)(HashType);
typedef struct HashElem{
HashType key;
ValueType value;
Statu Statu;
}HashElem;
typedef struct HashTable{
HashElem data[HASHTABLEMAX];
size_t size;
HashFunc hash_func;
}HashTable;
/*初始化*/
void HashTableInit(HashTable* ht);
/*插入*/
void HashTableInsert(HashTable* ht, HashType key, ValueType value);
/*
**查找
**输入key,查找key对应的value
*/
in