问题
已知两个链表A和B分别表示两个集合,且元素递增排列。编一函数,求A和B的交集并存放于A链表中。
分析
将A链表置空,从A和B有相同的结点的时候,插入到A链表中。
代码
typedef int ElemType;
typedef struct LNode {
ElemType data;
struct LNode * next;
}LNode, *LinkList;
void intersection(LinkList &l1, LinkList &l2) {
LNode *p = l1 -> next, *q = l2 -> next, *r;
l1 -> next = NULL;
r = l1;
while(p && q) {
if(p -> data == q -> data) {///值相等,插入到l1中,尾插法
LNode *p1 = p -> next;
p -> next = NULL;
r -> next = p;
r = p;
p = p1;
}else if(p -> data < q -> data) {///移动p
p = p -> next;
}else if(p -> data > q -> data){///移动q
q = q -> next;
}
}
}
源代码
http://123.206.59.223:8080/code/code/11.rar