算法思想:设置两个指针分别指向两个单链表,依次比较两个单链表指针所指的元素值,选择最小元素的结点按照头插法插入到链表中,当两个链表其中一个还有剩余,则将剩余部分按头插法插入到链表中(注意头插防止断链,尾插法设置尾指针)

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;

}

}

更多推荐