1.求两个有序列表的交集
LNode* Intersection(LNode* La,LNode* Lb)
{
if (La==NULL||Lb==NULL)
{
return NULL;
}
LNode *pCHead = NULL; //A与B交集头
LNode *pCEnd = NULL; //A与B交集尾
//创建头结点
pCHead = new LNode();
pCHead->next = NULL;
pCEnd = pCHead;
LNode *pA = La->next; //指向有序列表A第一个结点
LNode *pB = Lb->next; //指向有序列表B第一个结点
while (pA != NULL && pB != NULL)
{
if (pA->data == pB->data)
{
LNode *pNode = new LNode();
pNode->data = pA->data;
//插入新建结点
pNode->next = pCEnd->next;
pCEnd->next = pNode;
pCEnd=pNode;
//相等,同时后移
pA = pA->next;
pB = pB->next;
}
else if (pA->data > pB->data)
{
//最小的相比,B小 B后移
pB = pB->next;
}
else
{
//最小的相比,A小 A后移
pA = pA->next;
}
}
r