1 ///字典树模板 2 struct f 3 { 4 int next[30]; 5 int v; 6 char englishi[15]; 7 void ff() 8 { 9 memset(next,-1,sizeof(next)); 10 v=0; 11 englishi[0]=‘\0‘; 12 } 13 };f s [1000000]; 14 int cut=0; 15 ///插入函数 16 void charu(char *s1,char *s2) 17 { 18 int i,k=0,su; 19 for (i=0;s2[i]!=‘\0‘;i++) 20 { 21 su=s2[i]-‘a‘; 22 if (s[k].next[su]==-1) 23 { 24 cut++; 25 s[k].next[su]=cut; 26 s[cut].ff(); 27 } 28 k=s[k].next[su]; 29 } 30 s[k].v=1; 31 strcpy(s[k].englishi,s1); 32 return ; 33 } 34 ///查找函数 35 int find(char *s1) 36 { 37 int i,k=0,su; 38 for (i=0;i<strlen(s1);i++) 39 { 40 su=s1[i]-‘a‘; 41 if (s[k].next[su]==-1) break; 42 k=s[k].next[su]; 43 } 44 if (s[k].v&&s[k].englishi[0]!=‘\0‘&&i==strlen(s1)) 45 { 46 printf("%s",s[k].englishi); 47 return 0; 48 } 49 return 1; 50 }
原文:http://www.cnblogs.com/pblr/p/5720260.html