Zookeeper
The dictionary tree is often used for prefix matching.
[[Email protected] 0813] $ cat dic_tree.cpp # include <iostream> # include <stdio. h> # define Max 26 usingnamespace STD; typedefstruct trienode {intncount; structtrienode * Next [Max];} trienode; voidinit (trienode ** proot) // initialize {* proot = NULL;} trienode * Create () // create a node {trienode * A = new trienode; A-> ncount = 0; for (INTI = 0; I <Max; ++ I) A-> next [I] = NULL; returna;} voidinsert (trienode ** proot, char * s) // insert {I NTI, K; trienode * P; If (! (P = * proot) {P = * proot = create ();} I = 0; while (s [I]) {k = s [I ++]-'A'; If (! P-> next [k]) {P-> next [k] = create ();} p = p-> next [k];} p-> ncount ++;} int search (trienode * proot, char * s) // find {trienode * P; Inti, K; If (! (P = proot) {return0;} I = 0; while (s [I]) {k = s [I ++]-'A '; if (p-> next [k] = NULL) return0; P = p-> next [k];} returnp-> ncount;} int main (INT argc, const char * argv []) {trienode * P; Init (& P); chara [20] = {"ABC"}; insert (& P, ); insert (& P, A); insert (& P, "BCD"); insert (& P, A); cout <search (P, A) <Endl; cout <search (P, "BCD") <Endl; return0 ;}
Dictionary tree implementation