题目:已知,两个链表A和B分别表示两个集合,其元素递增排列。编制函数,求A与B的交集,并存放于A链表中。
分析:
- 求交集,即要找出A中和B中都有的元素;
- 元素递增排列,则可同时遍历;用p指针指向A中当前的结点;用q指针指向B中当前的结点;
- 如果A的data比B的小,则释放当前节点,且A的指针往右移动一位;然后继续比较;
- 如果B的data比B的小,则释放当前节点,B的指针往右移动一位;然后继续比较;
- 如果data相同,则A中保留结点,而B中继续删除该结点;且指针同时右移一位;
- 如果A表比较短,只要确保A中的结点被全部遍历一遍即可;
- 如果B表比较短,只要确保B中的结点被全部遍历一遍即可;
CODE:
LinkList Union(LinkList &LA,LinkList LB){
if(LA->next ==NULL || LB->next ==NULL) return; //A or B is empty
LNode *p