#include <stdio.h>
#include <stdlib.h>
#include "doulist.h"
typedef struct hash
{
Pnode buff[10];
}Hash, *pHash;
Hash *createHash()
{
pHash p = (pHash)malloc(sizeof(Hash));
if (NULL == p)
{
return NULL;
}
for (int i = 0; i < 10; i++)//-1代表空
{
p->buff[i] =NULL;
}
return p;
}
void destroyHash(Hash *p)
{
if (NULL == p)
{
return -1;
}
for (int i = 0; i < 10; i++)//-1代表空
{
/*if (NULL != p->buff[i])
{
free(p->buff[i]);
}*/
douListDestroy(&(p->buff[i]));
}
free(p);
}
int hashFunc(int key)
{
if (key < 0)
{
return -1;
}
key = key % 10;
return key;//---------------------------------
}
int insertHash(Hash *p, int data)
{
if (NULL == p)
{
return -1;
}
int index = hashFunc(data);//内存 与 数据的关系
if (-1 == index)
{
return NULL;
}
int ret=douListInsertDataBySort(&(p->buff[index]), data);
if (0 == ret)
{
return 0;
}
return -1;
}
Pnode findHash(Hash *p, int data)
{
if (NULL == p)
{
return NULL;
}
if (data < 0)
{
return NULL;
}
int index = hashFunc(data);
if (-1 == index)
{
return NULL;
}
Pnode p=douListFindNode(p->buff[index], data);
return p;
}
void main()
{
}
C语言 简单链式哈希
最新推荐文章于 2025-02-08 17:01:46 发布