#include <iostream>
#define MAX 26
using namespace std;
struct Node{
bool isStr;
Node *next[MAX];
};
void insert(Node *root,const char *s)
{
if(root==NULL||s=='\0')
return;
size_t i;
Node *p = root;
while(*s!='\0')
{
if(p->next[*s-'a']==NULL)
{
Node *tmp = (Node*)malloc(sizeof(Node));
for(i=0;i<MAX;i++)
tmp->next[i]=NULL;
tmp->isStr = false;
p->next[*s-'a']=tmp;
p = p->next[*s-'a'];
}
else
{
p = p->next[*s-'a'];
}
s++;
}
p->isStr = true;
}
int search(Node *root,const char *s)
{
Node *p = root;
while(p!=NULL&& *s!='\0')
{
p = p->next[*s-'a'];
s++;
}
return (p!=NULL && p->isStr);
}
void del(Node *root)
{
for(size_t i = 0;i<MAX;i++)
{
if(root->next[i]!=NULL)
del(root->next[i]);
}
free(root);
}
int main()
{
size_t i,n;
char s[20];
Node *root = (Node*)malloc(sizeof(Node));
for(i=0;i<MAX;i++)
{
root->next[i]=NULL;
}
root->isStr = false;
cin>>n;
for(i=0;i<n;i++)
{
scanf("%s",s);
insert(root,s);
printf("%d %s\n",i,s);
}
cout<<"shurujieshu"<<endl;
while(1)
{
scanf("%s",s);
printf("查找单词%s:%d\n",s,search(root,s));
}
del(root);
return 0;
}
海量数据处理之字符串处理
最新推荐文章于 2023-03-29 10:55:48 发布