我一直在尝试搜索2个链表中的常用词。
我为此写了一个简单的方法。
代码
void search(node *first1, node *first2){
while(first2 != NULL){
while(first1 != NULL){
if(first1 -> string == first2 -> string){
printf("%s\n", first1 -> string );
}
first1 = first1 ->next;
}
first2 = first2 ->next;
}
}
first1和first2是两个文件的链接列表的标题。
first2第一个元素是“是。”。输出给了我27“是。”没有别的。 27是first1 ll中的元素数。
答案 0 :(得分:4)
完成df.player.map(df[df.condition==1].drop_duplicates(['player'],keep='first').set_index('player').num)
Out[221]:
0 2
1 2
2 2
3 3
4 3
5 3
6 3
Name: player, dtype: int64
df['numCondition']=df.player.map(df[df.condition==1].drop_duplicates(['player'],keep='first').set_index('player').num)
df
Out[223]:
player condition num numCondition
0 A 0 1 2
1 A 1 2 2
2 A 1 3 2
3 B 0 1 3
4 B 0 2 3
5 B 1 3 3
6 B 0 4 3
循环后,您的while(first1 != NULL)
指针始终指向first1
,因此后续的NULL
循环迭代将始终找到while(first2 != NULL)
。
要解决此问题,您应该在输入功能时保持first1 == NULL
的值:
first1
此外,根据void search(node *first1, node *first2){
node *first1_head = first1; // <- keep track of the first element in first1
while(first2 != NULL){
while(first1 != NULL){
if(first1 -> string == first2 -> string){
printf("%s\n", first1 -> string );
}
first1 = first1 ->next;
}
first1 = first1_head; // <- restore first1 to point to its first element
first2 = first2 ->next;
}
的类型,您应该使用正确的字符串比较函数。