输入两个递增的链表,合并两个链表使其合成一个新的链表,新的链表仍然是递增顺序的;
链表1的头结点的值小于链表2的头结点的值,因此链表1的有节点将是合并后链表的头结点。剩余节点中链表2的头结点的值是剩余结点的头结点,把这个节点和之前已经合并好的链表的尾结点链接起来,这是一个递归的过程。
实现代码如下:
Plink Merge(Plink phead1,Plink phead2)
{
if(phead1==NULL)
{
return phead2; //如果第一个链表为空,则返回第二个链表;
}
else if(phead2==NULL)
{
return phead1; //第二个链表为空,则返回第一个链表;
}
Plink pMergeHead=NULL; //定义一个新的头结点置空;
if(phead1->mdata < phead2->mdata)
{
pMergeHead=phead1;
pMergeHead->pnext=Merge(phead1->pnext,phead2); //比较两个链表第一个元素的大小,第一个小的话,则作为新链表的第一个元素
} //第二个链表的头结点作为新链表的第二个元素;
else
{
pMergeHead=phead2;
pMergeHead->pnext=Merge(phead1,phead2->pnext);
}
return pMergeHead;
}
运行结果: