哈希表的建立,初始化,节点的插入,查找,删除及哈希表的销毁的相关代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<assert.h>
typedef int KeyType;
typedef int ValueType;
#define primesize 8
typedef struct HashNode //哈希节点
{
KeyType _key;
ValueType _value;
struct HashNode* _next;
}HashNode;
typedef struct HashTable //哈希表
{
HashNode** _tables;//指针数组
int _size;
int _N;
}HashTable;
//建立一个哈希节点
HashNode* BuyHashNode(KeyType key, ValueType value)
{
HashNode* node=(HashNode*)malloc(sizeof(HashNode));
assert(node);
node->_key=key;
node->_value=key;
node->_next=NULL;
return node;
}
int HashFunc(KeyType key, int N)//确定数据在哈希表下的坐标
{
return key%N;
}
int GetNextPrimeNum(int cur)//通过素数表来确定扩容大小
{
//int primesize=8;
int i=0;
int primelist[primesize]={53,97,193,389,769,1543,3079,6151};
for( i=0;i<primesize;i++)
{
if(cur<pri