不需要用链表,用动态数组就可以了,尽量问题简单化
用一个数组来保存key,每次输入的时候从key里查询有没有重复就可以了
typedef struct {
char data[101];
char result[4];
} Data;
int main ()
{
int N, i, j, k=0;
scanf("%d",&N);
char (*keys)[101] = (char(*)[101])malloc(sizeof(char[101])*N); //记录没有重复的key
Data *data = (Data*)malloc(sizeof(Data)*N);
for (i=0; i<N; i++) {
scanf("%s", data[i].data);
for (j=0; j<k; j++) { //遍历key查找是否有重复数据
if (strcasecmp(data[i].data,keys[j])==0) {
break;
}
}
if (j==k) { //如果没有重复,则把数据存入key,并保存结果为No
strcpy(keys[k++], data[i].data);
strcpy(data[i].result, "No");
} else { //否则保存结果为Yes
strcpy(data[i].result, "Yes");
}
}
for (int i=0; i<N; i++) { //最后打印结果
printf("%s\n", data[i].result);
}
free(keys);
free(data);
return 0;
}