用Trie树实现词频统计和单词查询
2011-08-20 16:45
441 查看
/* 文件名: trie.c 功能描述:用trie树实现单词词频统计以及单词查询 说明: 对统计对象,要求符合正则"[a-z]*"的格式的单词 若考虑大写,标点和空白字符(空格.TAB.回车换行符), 可修改next数组大小,最多255可包含所有字符 */ #include <stdio.h> #include <stdlib.h> #include <memory.h> typedef struct Trie_node_stru { int count; //记录该处终结的单词个数 struct Trie_node_stru *next[26];//指向各个子树的指针,下标0-25代表26字符 }TrieNode, *Trie; TrieNode* trie_createTrieNode() { TrieNode* tmp = (TrieNode*)malloc(sizeof(TrieNode)); tmp->count = 0; memset(tmp->next, 0, sizeof(tmp->next)); return tmp; } int trie_insert(Trie root, char* word) { TrieNode* node = root; char *p = word; while(*p) { if(NULL == node->next[*p-'a']) { node->next[*p-'a'] = trie_createTrieNode(); } node = node->next[*p-'a']; p++; } node->count += 1; printf("%-20s appears for %d time(s) in the Trie!\r\n", word, node->count); return 0; } int trie_search(Trie root, char* word) { TrieNode* node = root; char *p = word; while(*p && NULL!=node) { node = node->next[*p-'a']; p++; } return (node!=NULL && node->count>0); } int trie_remove(Trie root, char* word) { //TODO return 0; } int main() { Trie t = trie_createTrieNode(); trie_insert(t, "a"); trie_insert(t, "abc"); char * c = "test"; trie_insert(t, c); trie_insert(t, "testonly"); trie_insert(t, "testonly"); trie_insert(t, "a"); printf("====================\r\n"); if(trie_search(t, "a")) printf("true\n"); else printf("false\n"); if(trie_search(t, "testnly")) printf("true\n"); else printf("false\n"); return 0; }
学习trie树知识: http://www.cnblogs.com/cherish_yimi/archive/2009/10/12/1581666.html
相关文章推荐
- 【数据结构-trie树】trie数实现单词查询和单词统计
- 【数据结构-trie树】trie数实现单词查询和单词统计
- Trie树实现词频统计与查找
- 统计单词个数及词频(C++实现)
- Trie树统计词频和指定前缀的单词个数
- 使用Python+NLTK实现英文单词词频统计
- 使用Python+NLTK实现英文单词词频统计
- Trie树(字典树)实现词频统计或前缀匹配类型的问题
- Java实现读取键盘输入保存到txt文件,再统计并输出每个单词出现次数的方法
- oracle 实现按天,周,月,季度,年查询统计数据
- SQL实现分组统计查询(按月、小时分组)
- Python字典使用--词频统计的GUI实现
- 实现按部门月卡余额总额分组统计的SQL查询代码
- 通过JDBC实现对Oracle,mysql数据库的增删改查,模糊查询,查询全部,根据ID查询,分页查询,统计查询,
- 统计英文文章中出现的单词数量(基于字节实现)
- 单个select语句实现MySQL查询统计次数
- 在链表上实现单词统计
- Hadoop之——以1.x版本和0.x版本分别实现单词统计功能
- MySQL 统计查询实现代码
- Java实现统计一篇文章中每个单词出现的次数