已知两个链表A和B分别表示两个集合,其元素递增排列。请设计算法求出A与B的交集,并存放于A链表中。
void ands(list *&l1, list *&l2)
{
if (l1 == NULL) return;
if (l2 == NULL) { l1 = NULL; return; }
list *p1 = l1->next;
list *p2 = l2->next;
list *head = new list;
head->next = NULL;
list *p = head;
while (p1!=NULL&&p2!=NULL)
{
if (p1->data < p2->data)
{
list *u = p1;
p1 = p1->next;
delete u;
}
else if (p1->data > p2->data)
{
list *u = p2;
p2 = p2->next;
delete u;
}
else
{
p->next = p1;
list *u = p2;
p1 = p1->next;
p2 = p2->next;
p = p->next;
delete u;
}
}
while (p1)
{
list *u;
u = p1;
p1 = p1->next;
delete u;
}
while (p2)
{
list *u;
u = p2;
p2 = p2->next;
delete u;
}
p->next = NULL;
l1 = head->next;
}