如果需要归并的两个有序对象都是通过链表实现的,
可以使用递归的方式进行归并。
链表节点
struct ListNode
{
int nData;
ListNode* pNext;
};
归并排序
ListNode* MergeSort(ListNode* pHead1, ListNode* pHead2)
{
if (NULL == pHead1)
return pHead2;
else if (NULL == pHead2)
return pHead1;
ListNode* pNewHead = NULL;
if (pHead1->nData < pHead2->nData)
{
pNewHead = pHead1;
pNewHead->pNext = MergeSort(pHead1->pNext, pHead2);
}
else
{
pNewHead = pHead2;
pNewHead->pNext = MergeSort(pHead1, pHead2->pNext);
}
return pNewHead;
}
详细内容可以参考:
剑指offer:面试题17:合并两个排序的链表