//头插法
void merge(LNode *A,LNode *B,LNode *&C)
{
LNode *p=A->next;//(p跟踪A的最小值结点),跟踪的开始结点是头结点后面一个
LNode *q=B->next;//(q来跟踪B的最小值结点)
LNode *s;//(这个s指向新创建的结点)
C=A;//(A的头结点做C的头结点)
C->next=NULL;
free(B);//(B的头结点已无用,释放)
while(p!=NULL&&q!=NULL)
{
if(p->data<=q->data)
{
s=p;
p=p->next;
s=>next=C->next;
C->next=s;
}
else
{
s=q;
q=q->next;
s=>next=C->next;
C->next=s;
}
}
//怕一条链插完了,还有另外一条链还有剩余,将剩余结点链接在C尾部,
//但是这时要考虑让其成为递减序列
while(p!=NULL)
{
s=p;
p=p->next;
s->next=C->next;
C->next=s;
}
while
{
s=q;
q=q->next;
s->next=C->next;
C->next=s;
}
}