C两个链表搜索

时间:2017-10-07 19:44:00

标签: c search linked-list

我一直在尝试搜索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中的元素数。

1 个答案:

答案 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; } 的类型,您应该使用正确的字符串比较函数。