Node* merge(Node* p1, Node* p2)
{
//检验输入参数。
if(p1==NULL)
return p2;
else if(p2==NULL)
return p1;
Node* head;
Node* p;
if (p1->value>p2->value)
{//使得p1的第一个元素大于p2的。
p=p1;
p1=p2;
p2=p;
}
head=p=p1;//存储头结点。
for (p1=p1->pNext; p1!=NULL && p2!=NULL; )
{//添加较小的元素
if (p1->value>p2->value)
{
p->pNext=p2;
p=p->pNext;
p2=p2->pNext;
}
else
{
p->pNext=p1;
p=p->pNext;
p1=p1->pNext;
}
}
//将剩下的元素直接置于合并的链表后面。
if (p1==NULL)
{
p->pNext=p2;
}
else
p->pNext=p1;
return head;
}
1. 检验输入参数。
2. 头指针首先存储下来。
3. 循环结束后,将p1或者p2中的元素直接置于链表后面。