算法思想:设置两个指针分别指向两个单链表,依次比较两个单链表指针所指的元素值,选择最小元素的结点按照头插法插入到链表中,当两个链表其中一个还有剩余,则将剩余部分按头插法插入到链表中(注意头插防止断链,尾插法设置尾指针)
void Sort(LinkList &A,&B){
LNode *p=A->next,*q=B->next;
LNode *r;
A->next=NULL;
while(p!=NUUL&&q!=NUUL){
if(q->data<p->data)//如果q所指元素小于p的
r=q->next;//r防止断链
q->next=A->next;//头插法插入结点
A->next=q;
q=r;
else//如果p所指元素小于q的
r=p->next;//r防止断链
p->next=A->next;//头插法插入结点
A->next=p;
p=r;
}
while(p!=NUUL)//若P中还有剩余则将剩余部分头插入结点中
{
r=p->next;//防止断链
p->next=A->next;//头插
A->next=p;
p=r;
}
while(q!=NUUL)//若q中还有剩余则将剩余部分头插入结点中
{
r=q->data;//防止断链
q->next=A->next;//头插
A->next=q;
q=r;
}
}