求两个有序链表的交集(差集)

题目:现给出两个有序单链表,求出这两条链表的交集

函数实现结果演示
这里写图片描述

这个总体思路也是比较简单的,既然是有序的,那么就可以直接根据大小比对,大的节点先放着,小的往后走看能否遇到和大的节点一样的data,相等的话就直接输出,这样每一个元素都不会漏掉了!
这里写图片描述

//15. 求两个有序单链表交集(差集)
void UnionSet(pList list1, pList list2)
{
    if (list1 == NULL || list2 == NULL)
        return;
    while (list1 && list2)
    {
        if (list1->data < list2->data)
        {
            list1 = list1->next;
        }
        else if (list1->data > list2->data)
        {
            list2 = list2->next;
        }
        else
        {
            printf("%d ", list1->data);
            list1 = list1->next;
            list2 = list2->next;
        }
    }
}

根据这个思路求差集也是很简单的,只需要把data不相等的节点的值输出就可以了!

猜你喜欢

转载自blog.csdn.net/m0_38032942/article/details/81235258