1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 5 typedef struct tire 6 { 7 struct tire *next[26];//由于是小写字母,所以26,数字10,大小写字母52 8 int v; 9 }Tire; 10 11 Tire *root; //头指针 12 13 void Insert(char *a) 14 { 15 int len,i; 16 Tire *p=root,*q; 17 for(i=0;i<strlen(a);i++) 18 { 19 int id=a[i]-'a'; 20 if(p->next[id]==0) 21 { 22 q=(Tire *)malloc(sizeof(Tire));//malloc(sizeof( ))表示分配内存空间 23 q->v=1; //头文件是stdio.h 24 for(int j=0;j<26;j++) 25 q->next[j]=0; 26 p->next[id]=q; 27 p=q; 28 } 29 else 30 { 31 p=p->next[id]; 32 p->v=p->v+1; 33 } 34 } 35 } 36 37 int findTire(char *str) 38 { 39 Tire *p=root; 40 for(int i=0;i<strlen(str);i++) 41 { 42 int id=str[i]-'a'; 43 if(p->next[id]==0) 44 return 0; 45 else 46 p=p->next[id]; 47 } 48 return p->v; 49 } 50 51 int main() 52 { 53 int i; 54 char temp[12]; 55 root=(Tire *)malloc(sizeof(Tire)); 56 for(i=0;i<26;i++) 57 root->next[i]=0; 58 root->v=2; 59 while(gets(temp),strcmp(temp,"")) //stcmp(temp,"")控制空行结束 60 Insert(temp); //还可以用temp[0]!=' '代替 61 memset(temp,'