2008-07-24から1日間の記事一覧

使い方(使用例)

#include <stdio.h> #include <string.h> #include "xl_hash.h" #define HASH_TABLE_SIZE 1000 /* ハッシュ関数(適当) */ int str_calc_hash(XL_KEY_TYPE key){ unsigned int sum = 0; int i; for(i = 0; i < strlen((char *)key); i++){ sum = sum * 62423 + *((char*)key + </string.h></stdio.h>…

xl_hash.c

#include "xl_hash.h" xl_hash *xl_hash_init(xl_hash_type *type){ return xl_hash_init_with_size(type, 0); } xl_hash *xl_hash_init_with_size(xl_hash_type *type, XL_HASH_KEY_TYPE size){ xl_hash *hash = (xl_hash *)calloc(1, sizeof(xl_hash)); ha…

xl_hash.h

#ifndef __XL_HASH__ #define __XL_HASH__ #include <stdio.h> typedef void * XL_VALUE_TYPE; typedef void * XL_KEY_TYPE; typedef unsigned long XL_HASH_KEY_TYPE; #define XL_HASH_CALC(hash, key) ((*hash->type->hash)(key)) #define XL_HASH_KEY_COMP(hash, a</stdio.h>…

CでHashを扱う便利(?)なのを作ってみた

CだとC++と違ってが使えないので、別のデータを格納するハッシュを利用するには、それ専用のソースを用意する必要がある。 そこで、Ruby等で使われているst_tableを参考に、柔軟なHashを自分なりに一から作ってみた。突っ込み、機能拡張大歓迎。一応一通りメ…