struct node
{
int v;
node *next[26];
} T[1000000];
int t=0;
node *newnode()
{
node *p=new node;//动态分配
//node *p=&T[t++];//静态分配
p->v=0;
for(int i=0; i<26; i++)
p->next[i]=NULL;
return p;
}
void insertnode(node *root,char *str)//插入
{
node *p=root;
int l=strlen(str);
for(int i=0; i<l; i++)
{
int t=str[i]-'a';
if(p->next[t]==NULL)
p->next[t]=newnode();
p=p->next[t];
}
p->v=1;
}
int find(node *root,char *str)//查找
{
node *p=root;
int l=strlen(str);
for(int i=0; i<l; i++)
{
int t=str[i]-'a';
if(p->next[t]==NULL)
return 0;
p=p->next[t];
}
return p->v;
}
void freenode(node *root)//释放内存
{
node *p=root;
for(int i=0; i<26; i++)
if(p->next[i]!=NULL)
freenode(p->next[i]);
free(p);
}
寒假集训——字典树(模板)
最新推荐文章于 2021-01-30 09:42:26 发布