字典树模版
来源:互联网 发布:淘宝怎么分期付款 编辑:程序博客网 时间:2024/05/21 16:37
#define MAX 26typedef struct Node{struct Node *next[MAX];int v;}Node, *Trie;Trie root;void createTrie(char *str){int len, i, j;Node *current, *newnode;len = strlen(str);if(len == 0){return;}current = root;for(i = 0; i < len; i++){int id = str[i] - 'a';if(current->next[id] == NULL){newnode = (Trie)malloc(sizeof(Node));newnode->v = 1; //初始v==1for(j = 0; j < MAX; j++){newnode->next[j] = NULL;}current->next[id] = newnode;current = current->next[id];}else{current->next[id]->v++;current = current->next[id];}}}int findTrie(char *str){int i, len;Trie current = root;len = strlen(str);if(len == 0){return 0;}for(i = 0; i < len; i++){int id = str[i] - 'a'; //根据需要选择是减去'0'还是'a',或者是'A'current = current->next[id];if(current == NULL) //若为空集,表示不存以此为前缀的串{return 0;}}return -1; //此串是字符集中某串的前缀//return current->v;}void dealTrie(Trie T){int i;if(T == NULL){return;}for(i = 0; i < MAX; i++){if(T->next[i] != NULL){dealTrie(T->next[i]);}}free(T);T = NULL;}
而对于静态建立:
int cnt = 0;Node node[10000];node[cnt].v = 1;for (int i = 0; i < MAX; i++){node[cnt].next[i] = NULL;} current->next[id] = &node[cnt++];
- 字典树 模版
- 字典树 基础模版
- 字典树模版
- 字典树模版
- 字典树模版
- 字典树(模版+源码)
- 字典树模版
- 字典树(讲解+模版)
- 字典树 讲解+模版
- HDU1251-字典树模版
- 字典树模版
- 字典树模版
- 《字典树》数组模版
- 字典树模版
- 字典树(讲解+模版)
- 字典树(讲解+模版)
- 字典树 (解析加模版)
- 字典树 (解析加模版)
- Android Http请求方法汇总
- ShareSDK超级强大的社会化分享库
- MFC构造内存DC显示图像
- 【smarty】min版smarty模板引擎-MinSmarty.class.php
- JAVA字符串和日期的相互转换
- 字典树模版
- NFC的安全性
- 加速人生来帮忙,系统顺畅又洁净!
- Java Swing编程:进度条和滑动条
- nsis打包exe
- android过滤隐藏文件FileFilter
- MVC安卓实践
- 开发者须知的25个免费数据可视化工具
- 以root帐号登陆后没有声音