我是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。
任何人都可以建议我应该怎样做(可能是哈希表,但我不熟悉)。
答案 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