有N个字符串,从前到后的顺序依次进行识别,若该字符串在之前未出现过(不区分大小写),则输出Yes,否则输出No
输入格式:
第一行为N,表示有N个字符串,接下来N行均为长度不超过100的字符串。
输出格式:
输出共N行,第 i 行输出表示第 i 个字符串之前是否出现过。
代码如下:
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#define maxm 100000
#define maxn 105
typedef struct node
{
char name[maxn];
struct node *next;
}linknode, *link;
void main()
{
link p, q;
int N, i, j;
char temp[maxn];
link user[maxn];
for(i=0;i<maxn;i++)
user[i]=NULL;
scanf("%d",&N);
for(i=0;i<N;i++)
{
scanf("%s",temp);
p=(link)malloc(sizeof(linknode));
p->next=NULL;
strcpy(p->name, temp);
if(user[strlen(p->name)]==NULL)
{
user[strlen(p->name)]=p;
printf("No\n");
}
else
{
q=user[strlen(p->name)];
while(q!=NULL)
{
if(!strcasecmp(q->name,p->name))
{
printf("Yes\n");
break;
}
else if(q->next==NULL)
{
q->next=p;
printf("No\n");
break;
}
q=q->next;
}
}
}
}