两个链表的并集
有链表A与链表B,求他们的并集并生成链表C
1.链表的数据结构:
typedef int ElemType;
typedef struct Node
{
ElemType data;
struct Node * next;
}LNode,* LinkList;
2.链表A与链表B的并集
//A表与B表元素的并集
void unionAB(LinkList A,LinkList B,LinkList &C)
{
C=(LinkList)malloc(sizeof(LNode));
C->next=NULL;
LinkList pa,pb,pc,q;
pa=A->next;
pb=B->next;
pc=C;
while(pa && pb)
{
if(pa->data < pb->data)
{
q=(LinkList)malloc(sizeof(LNode));
q->data=pa->data;
q->next=NULL;
pc->next=q;
pc=pc->next;
pa=pa->next;
}
else if(pa->data > pb->data)
{
q=(LinkList)malloc(sizeof(LNode));
q->data=pb->data;
q->next=NULL;
pc->next=q;
pc=pc->next;
pb=pb->next;
}
else
{
q=(LinkList)malloc(sizeof(LNode));
q->data=pa->data;
q->next=NULL;
pc->next=q;
pc=pc->next;
pa=pa->next;
pb=pb->next;
}
}
while(pa)//b到表尾
{
q=(LinkList)malloc(sizeof(LNode));
q->data=pa->data;
q->next=NULL;
pc->next=q;
pc=pc->next;
pa=pa->next;
}
while(pb)//a到表尾
{
q=(LinkList)malloc(sizeof(LNode));
q->data=pb->data;
q->next=NULL;
pc->next=q;
pc=pc->next;
pb=pb->next;
}
}