在C中使用大小为1K的列表中实现哈希实现

时间:2013-06-24 10:39:00

标签: c string hash hashmap hashtable

我是C的新手,我有一个要求,我需要根据“电子邮件ID或ipv4 / 6-address”快速查找

我的结构看起来应该是

{
  enum_usr_type ;/*(which can be either e-mail type or ip-address type)*/

  char_id_data ; /*(which can be either a email-id string OR ipv4/6 ip-address string) */
}

完整数据库的大小预计为1K。

任何人都可以建议我应该怎样做(可能是哈希表,但我不熟悉)。

1 个答案:

答案 0 :(得分:0)

POSIX哈希表管理

man hsearch

<强> Libhash

ftp://ftp.ugh.net.au/pub/unix/libhash/

Libhash是一个用C

编写的小型哈希库

安装后

man libhash

我个人更喜欢libhash,它非常小,你可以很容易地嵌入你的代码,也很容易使用:

hash h;

/* in your case number_of_buckets = 2053, 1k*2 = 2048, the next prime number is 2053. */
hash_initialise(&h, 2053U, NULL, NULL, NULL, free, free)

/* insert */
hash_insert(&h, key, value);

/* retrieve */
hash_retrieve(&h, key, &ptr);

/* dispose hash table */
hash_deinitialise(&h);

再次

man libhash