1 #include<bits/stdc++.h>
2 using namespace std;
3
4 typedef struct TrieNode{
5 bool flag;
6 TrieNode *next[26];
7 TrieNode(){
8 flag = false;
9 memset(next, 0, sizeof(next));
10 }
11 }TrieNode, *Trie;
12
13 TrieNode *InitTrieNode(){
14 TrieNode *p = new TrieNode;
15 return p;
16 }
17
18 void InsertNode(Trie root, char *word){
19 Trie p = root;
20 char *ch = word;
21 int id;
22 while(*ch){
23 id = *ch - 'a';
24 if (p->next[id] == NULL)
25 p->next[id] = InitTrieNode();
26 p = p->next[id];
27 ++ch;
28 }
29 p->flag = true;
30 }
31
32 bool TrieSearch(Trie root, char *word){
33 Trie p = root;
34 char *ch = word;
35 int id;
36 bool ans = false;
37 while(*ch){
38 id = *ch - 'a';
39 if (p->next[id] == NULL)
40 return false;
41 p = p->next[id];
42 ++ch;
43 }
44 return p->flag;
45 }
46
47 int main()
48 {
49 Trie root = InitTrieNode();
50 cout<<"请输入需要的单词数:"<<endl;
51 int n;
52 char str[25];
53 cin>>n;
54 while(n--){
55 cout<<"请输入单词:"<<endl;
56 cin>>str;
57 InsertNode(root, str);
58 }
59 cout<<endl<<"请输入需要的查询数:"<<endl;
60 cin>>n;
61 while(n--){
62 cout<<"请输入单词:"<<endl;
63 cin>>str;
64 if (TrieSearch(root, str)) cout<<"该单词存在"<<endl<<endl;
65 else cout<<"该单词不存在"<<endl<<endl;
66 }
67
68 return 0;
69 }