我是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。

谁能建议我应该怎么做的任何指针(也许是哈希表,但我并不熟悉)。

最佳答案

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

关于c - 在C中大小为1K的列表上的哈希实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17273460/

10-16 11:28