看来看去,真不知道该弄什么了,忙来忙去只整了这个皮囊。。没有脸面说,弱弱的留下代码:
#include<iostream>
#include<string>
using namespace std;
struct node
{
node *next[26];
int v;
};
node *root;
char str[1001][21];
void insert(char *s)
{
node *p=root;
for(;*s!='\0';s++)
{
int d=*s-'a';
if(p->next[d]!=NULL)
p->v++;
else
{
p->next[d]=new node();
p->v++;
}
p=p->next[d];
}
p->v++;
}
void find(char *s)
{
node *p=root;
char *s1=s;
for(;*s1!='\0';s1++)
{
int d=*s1-'a';
p=p->next[d];
if(p->v==1)
{
*(++s1)='\0';
printf("%s\n",s);
return ;
}
}
printf("%s\n",s);
}
int main()
{
int i=0;
root=new node();
while(scanf("%s",str[i])!=EOF)
{
insert(str[i]);
i++;
}
for(int j=0;j<i;j++)
{
printf("%c ",str[j]);
find(str[j]);
}
return 0;
}