トライ木でお手軽連想配列
http://ja.wikipedia.org/wiki/%E3%83%88%E3%83%A9%E3%82%A4%E6%9C%A8
かんたん!
typedef struct TriTree_ { struct TriTree_ *children[256]; void *value; } TriTree; TriTree *new_tri_tree(){ int i; TriTree *t = malloc(sizeof(TriTree)); for (i = 0; i < 256; i++) { t->children[i] = NULL; } t->value = NULL; return t; } void *tri_tree_get(TriTree *t, char *s) { if(!t){ return NULL; } if(s[0]){ return tri_tree_get(t->children[s[0]], s+1); }else{ return t->value; } } TriTree *tri_tree_set(TriTree *t, char *s, void *value) { if(!t){ t = new_tri_tree(); } if(s[0]){ t->children[s[0]] = tri_tree_set(t->children[s[0]], s+1, value); }else{ t->value = value; } return t; } int main(void) { TriTree *t = NULL; t = tri_tree_set(t, 文字列, 格納したいデータのポインタ); void *p = tri_tree_get(t, 文字列); }