0

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

我的结构应该看起来像

{
  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。

任何人都可以提出任何关于我应该如何去做的建议(也许是 hash table ,但我不熟悉)。

4

1 回答 1

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
于 2013-06-24T13:24:49.267 回答