字典树模板
2011-05-25 17:42
309 查看
注意:结构体中每个字母的指针下都可存在一个结构体单元,即26个字母的指针单元。#include<stdio.h> #include<string.h> #include<stdlib.h> struct T { T *ch[26]; int n,flag; }rt; char in[15]; void init(T *t)//初始化 { for(int i=0;i<26;i++) { t->ch[i]=NULL; } t->n=t->flag=0; } void insert(T *t,char *in) { if(*in)//判断输入字符是否为空 { if(t->ch[*in-'a']==NULL) { t->ch[*in-'a']=(T *)malloc(sizeof(T)); init(t->ch[*in-'a']); } (t->ch[*in-'a']->n)++;//该节点出现的次数 insert(t->ch[*in-'a'],in+1); } else { t->flag=1;//标记是否为单词结束 } } int find(T *t,char *in)//寻找单词,递归,释放空间 { if(t->ch[*in-'a']!=NULL) { if(*(in+1)=='\0') { return t->ch[*in-'a']->n; } else { return find(t->ch[*in-'a'],in+1); } } else return 0; } int main() { T *s; s=(T *)malloc(sizeof(T)); init(s); while(gets(in))//有空行输入时使用gets() { if(strlen(in)==0) break; insert(s,in); } while(scanf("%s",in)!=EOF) { printf("%d\n",find(s,in)); } //system("pause"); return 0; }
相关文章推荐
- hdu 1251 字典树模板题 ---多串 查找单词出现次数
- 静态字典树和动态字典树模板
- 字典树模板
- 字典树模板题 POJ 2503
- 字典树 模板
- 字典树 模板+详解
- 字典树模板
- 字典树模板
- HDOJ 1251-统计难题【模板:字典树】
- 字典树模板/ac自动机模板
- (模板)Tried树(字典树)
- 字典树模板(java)
- 字典树(Tire树)模板+例题
- ACM_字典树模板
- hdu1671Phone List(字典树模板)
- 字典树模板
- 字典树模板(HDU1251)
- hdu 1305 字典树 模板
- HDU1251统计难题(字典树模板)
- 字典树模板及讲解 http://www.cnblogs.com/tanky_woo/archive/2010/09/24/1833717.html