本例中的哈希算法是一个演示用途,1,算法,2,取模 ,3 取余。此算法只是针对本题的例子,此算法并不能很好的分配数据。主要是练习一个哈希表的框架结构,要注意的是每个哈希表里的数据都要写在链表中,需要用malloc来定义,不然之后free会遇到无法释放的问题。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME 256
#define TABLE_SIZE 10
typedef struct person
{
char name[MAX_NAME];
int age;
struct person * next;
struct person * prev;
struct person * last;
}person;
void init_hash_table(person * hh[])
{
for (int i = 0 ; i < TABLE_SIZE ; i++)
{
hh[i] = NULL;
}
}
void print_hash_table(person * hh[])
{
for(int i = 0 ; i < TABLE_SIZE ; i++)
{
if(hh[i] != NULL)
{
if(hh[i]->last != NULL)
{
person *p = hh[i];
printf("hh[%d]",i);
while(p)
{
printf("--%s--%d",p-&g