代码如下
ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{
if (pHead1 == NULL)
{
return pHead2;
}
else if (pHead2 == NULL)
{
return pHead1;
}
ListNode* pMergeHead = NULL;
if (pHead1->m_nValue<pHead2->m_nValue)
{
pMergeHead = pHead1;
pMergeHead->m_pNext = Merge(pHead1->m_pNext, pHead2);
}
else
{
pMergeHead = pHead2;
pMergeHead->m_pNext = Merge(pHead1, pHead2->m_pNext);
}
return pMergeHead;
}
ListNode* Test(ListNode* pHead1, ListNode* pHead2)
{
printf("The first list is:\n");
PrintList(pHead1);
printf("The second list is:\n");
PrintList(pHead2);
printf("The Merged list is:\n");
ListNode*pMergeHead = Merge(pHead1, pHead2);
PrintList(pMergeHead);
return pMergeHead;
}
void Test1()
{
ListNode* pNode1 = CreateListNode(1);
ListNode* pNode3 = CreateListNode(3);
ListNode* pNode5 = CreateListNode(5);
CoonnectListNode(pNode1, pNode3);
CoonnectListNode(pNode3, pNode5);
ListNode* pNode2 = CreateListNode(2);
ListNode* pNode4 = CreateListNode(4);
ListNode* pNode6 = CreateListNode(6);
CoonnectListNode(pNode2, pNode4);
CoonnectListNode(pNode4, pNode6);
ListNode* pMergeHead = Test(pNode1, pNode2);
DestroyList(pMergeHead);
}