typedef struct Trie { int v ; Trie *next[26] ; }; Trie root ; void createTrie(char *str) { int l = strlen(str) ; Trie *p = &root , *q ; for(int i = 0 ; i < l ; i ++) { int m = str[i] - 'a' ; if(p -> next[m] == NULL) { q = (Trie *)malloc(sizeof(root)) ; q -> v = 1 ; for(int j = 0 ; j < 26 ; j ++) q -> next[j] = NULL ; p -> next[m] = q ; p = p -> next[m] ; } else { p -> next[m] -> v ++ ; p = p -> next[m] ; } } } int findTrie(char *str) { int l = strlen(str) ; Trie *p = &root ; for(int i = 0 ; i < l ; i ++) { int m = str[i] - 'a' ; p = p -> next[m] ; if(p == NULL) return 0 ; } return p -> v ; }
字典树模板
最新推荐文章于 2020-03-28 16:21:32 发布