首页 > 代码库 > Trie树
Trie树
指针版
#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树
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。