求哈希表的程序,要用链表实现的!谢谢,急用!
typedef struct _Node
{
element_t data;
struct _Node* next;
}Node, *PNode;
typedef unsigned(*hash_function_t)(element_t);
typedef struct _Hash
{
unsigned size;
unsigned element_count;
hash_function_t function;
PNode* elements;
} Hash, *PHash;
PHash Hash_Create(unsigned size, hash_function_t function)
{
PHash Result;
Result = (PHash)malloc(sizeof(Hash));
Result -> size = size;
Result -> function = function;
Result -> element_count = 0;
Result -> elements = (PNode*)calloc(sizeof(PNode) * size);
}
void Hash_Add(PHash hash, element_t element)
{
unsigned key;
PNode NewNode;
key = hash->function(element);
PNode = (PNode)malloc(sizeof(Node));
PNode -> next = ->elements[key];
PNode -> date = element;
hash->elements[key] = PNode;
hash->element_count ++;
}
PNode Hash_Find(PHash hash, element_t element)
{
unsigned key;
PNode ANode;
key = hash->functon(element_t);
ANode = hash->elements[key];
while(ANode != NULL && ANode->data != element)
ANode = ANode->next;
return ANode;
}
void Hash_Destroy(PHash hash)
{
int i;
PNode ANode;
for (i = 0;i < hash->size; i ++)
{
while(hash->elements[i] != NULL)
{
ANode = hash->elements[i];
hash->elements[i] = ANode->next;
free(ANode);
}
}
free(hash->elements);
free(hash);
}