问题
已知两个线性表A、B均以带头结点的单链表作存储结构,且表中元素值按递增有序排列。设计算法求出A与B的交集C,要求C另开辟存储空间,并同样以元素值递增有序的单链表形式存储
分析
11题的思路,但是C要单独开辟空间,且A与B链表不可改变。
代码
void intersection(LinkList l1, LinkList l2, LinkList &l3) {
LNode *p = l1 -> next, *q = l2 -> next, *r;
l3 -> next = NULL;
r = l3;
while(p && q) {
if(p -> data == q -> data) {///值相等,插入到l1中,尾插法
LNode *temp = (LinkList)malloc(sizeof(LNode));
temp -> data = q -> data;
r -> next = temp;
temp -> next =NULL;
p = p -> next;
q = q -> next;
r = r -> next;
}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/13.rar