一个简单的Trie树实现
来源:互联网 发布:能组队的手游 知乎 编辑:程序博客网 时间:2024/05/20 09:43
header file
#ifndef TRIE_H_INCLUDED#define TRIE_H_INCLUDED#include<stdio.h>#include<malloc.h>typedef struct trie{ int words; int prefixes; struct trie *edges[26];} trie;trie * initialize(trie *node);trie * addWord(trie *ver,char *str);int countWords(trie *ver,char *str);int countPrefix(trie *ver,char *str);#endif // TRIE_H_INCLUDED
source file
#include "trie.h"trie * initialize(trie *node){ if(node==NULL) { node=(trie *)malloc(sizeof(trie)); node->words=0; node->prefixes=0; int i; for(i=0; i<26; i++) node->edges[i]=NULL; return node; }}trie * addWord(trie *ver,char *str){ printf("%d --- %c ",ver->words, str[0]); if(str[0]=='\0') { ver->words=ver->words+1; } else { ver->prefixes=(ver->prefixes)+1; char k; k=str[0]; str++; int index=k-'a'; if(ver->edges[index]==NULL) { ver->edges[index]=initialize(ver->edges[index]); } ver->edges[index]=addWord(ver->edges[index],str); } return ver;}int countWords(trie *ver,char *str){ if(str[0]=='\0') return ver->words; else { int k=str[0]-'a'; str++; if(ver->edges[k]==NULL) return 0; return countWords(ver->edges[k],str); }}int countPrefix(trie *ver,char *str){ if(str[0]=='\0') return ver->prefixes; else { int k=str[0]-'a'; str++; if(ver->edges[k]==NULL) return 0; return countPrefix(ver->edges[k],str); }}
test file
#include<stdio.h>#include<malloc.h>#include "trie.h"void testTrie(){ trie *start=NULL; start=initialize(start); int ch=1; while(ch) { printf("\n 1. Insert a word "); printf("\n 2. Count words"); printf("\n 3. Count prefixes"); printf("\n 0. Exit\n"); printf("\nEnter your choice: "); scanf("%d",&ch); char input[1000]; switch(ch) { case 1: printf("\nEnter a word to insert: "); scanf("%s",input); start=addWord(start,input); break; case 2: printf("\nEnter a word to count words: "); scanf("%s",input); printf("\n%d",countWords(start,input)); break; case 3: printf("\nEnter a word to count prefixes: "); scanf("%s",input); printf("\n%d",countPrefix(start,input)); break; } }}int main(){ testTrie(); return 0;}
- 一个Trie字典树的简单实现
- 一个简单的Trie树实现
- 一个Trie树的简单实现
- Trie 树的简单实现
- trie 树的简单实现
- 一个Trie树的实现
- 简单的trie实现
- trie树的一个简单例子源码
- Trie的一个实现
- 字典树(Trie)的简单实现
- Trie树的C++简单实现
- Trie前缀树简单实现
- Trie树; 模拟了一个简单的输入法;
- Trie树的实现
- Trie树的实现
- Trie树的简单实现(Java版本)
- 一个通用的Trie树,标准C++实现
- 一个通用的Trie树,标准C++实现
- VC中调用COM组件的方法
- C++的RTTI和dynamic_cast效率问题
- SSL技术白皮书(转)
- 09-马双象守和单车
- 解决方法error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
- 一个简单的Trie树实现
- 世界上最便宜的10张防癌处方
- 眼界决定方法
- 智能手机和平板的GPS精度测试
- ZooKeeper简介
- selenium页面元素等待问题
- [唐胡璐]QTP技巧 - .NET Winform内嵌Browser时,只能Spy到Page对象的解决办法
- POJ 3468 区间增加线段树
- android权限大全