合并排序链表(剑指offer)
struct listNode { //定义链表头节点
int m_nValue;
listNode * m_pNext;
}
listNode * mergeList (listNode * pHeadList1,listNode * pHeadList2)
{
if (pHeadList1 == NULL) {return pHeadList2;} //判断指针是否为空
if (pHeadList2==NULL) {return pHeadList1;}
listNode * pMergeListHead=NULL;//合并后的节点
if(pHeadList1->m_nValue < pHeadList2->m_nValue)
{
pMergeListHead->m_nValue=pHeadList1->m_nValue;
pMergeListHead->m_pNext=mergeList(pHeadList1->m_pNext,pHeadList2);//递归
}
else
{
pMergeListHead->m_nValue=pHeadList2->m_nValue;
pMergeListHead->m_pNext=mergeList(pHeadList1,pHeadList2->m_pNext);
}
return pMergeListHead;
}
//因为每次都是头节点比较,故可以考虑递归算法,只要保证有效的结束条件,就可完成。
本文介绍了一种使用递归方法合并两个已排序链表的算法。该算法通过比较两个链表头结点的值来确定合并后链表的头结点,并递归地处理剩余部分,最终实现将两个有序链表合并为一个新的有序链表。
&spm=1001.2101.3001.5002&articleId=57080141&d=1&t=3&u=6e53043e904e43259ca816dd60b2c0c6)

被折叠的 条评论
为什么被折叠?



