一、题目
什么是差集
对于集合A = {a, b, c, d}和集合B = {b, c, w},则A与B 的差集为 {a, d}
二、我的解答(所求的是L1-L2)
list* p1=L1->next;//指向L1链表的指针p1
List* p2=L2->next;//指向L2链表的指针p2
思想:若p1和p2指向空间的数据域的值相等,则两指针向后移动,如果不等且p1<p2,那么L1的这个元素必定不在L2中(因为链表元素递增),如果p1>p2,则需要去比较p1和p2的下一位置。
list* exception(list* L1,list* L2) { //L1-L2
if (!L1 || !L2) return L1;
list* p1 = L1->next, * p2 = L2->next, * p3 = L1;
while (p1 && p2) {
if (p1->value == p2->value) {
p1 = p1->next;
p2 = p2->next;
}
else if (p1->value < p2->value) {
p3->next = p1;
p3 = p1;
p1 = p1->next;
}
else
p2 = p2->next;
}
p3->next = p1 ? p1 : NULL;
free(L2);
return L1;
}