算法思想:从A,B中选取最小的元素插入C的尾部。
//尾插法
void merge(LNode *A,LNode *B,LNode *&C)
{
LNode *p=A->next;//(p跟踪A的最小值结点),跟踪的开始结点是头结点后面一个
LNode *q=B->next;//(q来跟踪B的最小值结点)
LNode *r;//(这个r要始终指向C的终端结点)
C=A;//(A的头结点做C的头结点)
C->next=NULL;
free(B);//(B的头结点已无用,释放)
r=C;//(r始终指向C目前的终端结点)
while(p!=NULL&&q!=NULL)
{
if(p->data<=q->data)
{
r->next=p;
p=p->next;
r=r->next;
}
else
{
r->next=q;
q=q->next;
r=r->next;
}
}
//怕一条链插完了,还有另外一条链还有剩余,将剩余结点链接在C尾部
if(p!=NULL)
r->next=p;
if(q!=NULL)
r->next=q;
}
//头插法
void merge(LNode *A,LNode *B,LNode *&C)