Trie树模板:
const int maxm = 31000;
struct Trie
{
int numptr;
struct Node
{
Node* son[26];
int ptr;
void init()
{
CLR(son, (int)NULL);
ptr = -1;
}
} s[maxm], root;
void init()
{
numptr = 0;
root.init();
}
void ins(char *ch, int z)
{
Node* ptr = &root;
for(int i = 0; ch[i] != 0; i++)
{
int x = ch[i] - 'a';
if(ptr->son[x] == NULL)
{
s[numptr].init();
ptr->son[x] = &s[numptr++];
}
ptr = ptr->son[x];
}
ptr->ptr = z;
}
int find(char *ch)
{
Node *ptr = &root;
for(int i = 0; ch[i] != 0; i++)
{
int x = ch[i] - 'a';
if(ptr->son[x] == NULL)
{
return -1;
}
ptr = ptr->son[x];
}
return ptr->ptr;
}
} trie;原文地址:http://blog.csdn.net/wty__/article/details/38399827