码迷,mamicode.com
首页 > 其他好文 > 详细

Trie树

时间:2016-10-05 07:09:27      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:

指针版

#define MAXNUM 26
//定义字典树结构体
typedef struct Trie
{
    bool flag;//从根到此是否为一个单词
    Trie *next[MAXNUM];
}Trie;
//声明一个根
Trie *root;
//初始化该根
void init()
{
    root = (Trie *)malloc(sizeof(Trie));
    root->flag=false;
    for(int i=0;i<MAXNUM;i++)
    root->next[i]=NULL;
}
//对该字典树的插入单词操作
void insert(char *word)
{
    Trie *tem = root;
    while(*word!=\0)
    {
        if(tem->next[*word-a]==NULL)
        {
            Trie *cur = (Trie *)malloc(sizeof(Trie));
            for(int i=0;i<MAXNUM;i++)
            cur->next[i]=NULL;
            cur->flag=false;
            tem->next[*word-a]=cur;
        }
        tem = tem->next[*word-a];
        word++;
    }
    tem->flag=true;
}
//查询一个单词的操作
bool search(char *word)
{
    Trie *tem = root;
    for(int i=0;word[i]!=\0;i++)
    {
        if(tem==NULL||tem->next[word[i]-a]==NULL)
        return false;
        tem=tem->next[word[i]-a];
    }
    return tem->flag;
}
//释放字典树内存操作,由于本题测试数据后程序自动跳出,所以这里没写释放内存函数
void del(Trie *cur)
{
    for(int i=0;i<MAXNUM;i++)
    {
        if(cur->next[i]!=NULL)
        del(cur->next[i]);
    }
    free(cur);
}

 

Trie树

标签:

原文地址:http://www.cnblogs.com/weeping/p/5931586.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!