题目:现给出两个有序单链表,求出这两条链表的交集
函数实现结果演示
这个总体思路也是比较简单的,既然是有序的,那么就可以直接根据大小比对,大的节点先放着,小的往后走看能否遇到和大的节点一样的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不相等的节点的值输出就可以了!