字典树
来源:互联网 发布:topsurv软件 编辑:程序博客网 时间:2024/06/05 09:39
字典树 模版
-
-
-
-
-
-
-
-
-
-
- #include <iostream>
- #include<string.h>
- #include<stdio.h>
- #include<stdlib.h>
- #define MAX 26
- using namespace std;
-
- struct Trie
- {
- Trie *next[MAX];
- int v;
- };
- Trie *root;
- void createTrie(char *str)
- {
- int len=strlen(str);
- Trie *p=root;
- Trie *q;
- for(int i=0;i<len;i++)
- {
- int id=str[i]-'0';
- if(p->next[id]==NULL)
- {
- q=(Trie *)malloc(sizeof(Trie));
-
- q->v=1;
-
- for(int j=0;j<MAX;j++)
- {
- q->next[j]=NULL;
-
- }
- p->next[id]=q;
-
- p=p->next[id];
- }
- else
- {
- p->next[id]->v++;
- p=p->next[id];
- }
- }
- p->v=-1;
- }
-
- int findTrie(char *str)
- {
- int len=strlen(str);
- Trie *p=root;
- for(int i=0;i<len;i++)
- {
- int id=str[i]-'0';
- p=p->next[id];
- if(p==NULL)
- return 0;
- if(p->v==-1)
- return -1;
- }
- return -1;
- }
-
- int dealTrie(Trie *T)
- {
- int i;
- if(T==NULL)
- {
- return 0;
- }
- for(i=0;i<MAX;i++)
- {
- if(T->next[i]!=NULL)
- dealTrie(T->next[i]);
- }
- free(T);
- return 0;
- }
-
- int main()
- {
- char word[10];
- gets(word);
- createTrie(word);
- printf("%d",findTrie(word));
- return 0;
- }