合并两个递增的列表

来源:互联网 发布:淘宝怎么用余额宝分期 编辑:程序博客网 时间:2024/05/22 07:51

题目描述

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
#include <iostream>#include "List.h"using namespace std;ListNode* MergeSortedList(ListNode* pHead1, ListNode* pHead2){if(pHead1 == NULL)return pHead2;if(pHead2 == NULL)return pHead1;ListNode* pMergeHead = NULL;if(pHead1->m_nValue < pHead2->m_nValue){pMergeHead = pHead1;pMergeHead ->m_pNext = MergeSortedList(pHead1->m_pNext, pHead2);}else{pMergeHead = pHead2;pMergeHead ->m_pNext = MergeSortedList(pHead1, pHead2->m_pNext);}return pMergeHead;}

// ====================测试代码====================ListNode* Test(char* testName, ListNode* pHead1, ListNode* pHead2){    if(testName != NULL)        printf("%s begins:\n", testName);    printf("The first list is:\n");    PrintList(pHead1);    printf("The second list is:\n");    PrintList(pHead2);    printf("The merged list is:\n");    ListNode* pMergedHead = MergeSortedList(pHead1, pHead2);    PrintList(pMergedHead);        printf("\n\n");    return pMergedHead;}// list1: 1->3->5// list2: 2->4->6void Test1(){    ListNode* pNode1 = CreateListNode(1);    ListNode* pNode3 = CreateListNode(3);    ListNode* pNode5 = CreateListNode(5);    ConnectListNodes(pNode1, pNode3);    ConnectListNodes(pNode3, pNode5);    ListNode* pNode2 = CreateListNode(2);    ListNode* pNode4 = CreateListNode(4);    ListNode* pNode6 = CreateListNode(6);    ConnectListNodes(pNode2, pNode4);    ConnectListNodes(pNode4, pNode6);    ListNode* pMergedHead = Test("Test1", pNode1, pNode2);    DestroyList(pMergedHead);}// 两个链表中有重复的数字// list1: 1->3->5// list2: 1->3->5void Test2(){    ListNode* pNode1 = CreateListNode(1);    ListNode* pNode3 = CreateListNode(3);    ListNode* pNode5 = CreateListNode(5);    ConnectListNodes(pNode1, pNode3);    ConnectListNodes(pNode3, pNode5);    ListNode* pNode2 = CreateListNode(1);    ListNode* pNode4 = CreateListNode(3);    ListNode* pNode6 = CreateListNode(5);    ConnectListNodes(pNode2, pNode4);    ConnectListNodes(pNode4, pNode6);    ListNode* pMergedHead = Test("Test2", pNode1, pNode2);    DestroyList(pMergedHead);}// 两个链表都只有一个数字// list1: 1// list2: 2void Test3(){    ListNode* pNode1 = CreateListNode(1);    ListNode* pNode2 = CreateListNode(2);    ListNode* pMergedHead = Test("Test3", pNode1, pNode2);    DestroyList(pMergedHead);}// 一个链表为空链表// list1: 1->3->5// list2: 空链表void Test4(){    ListNode* pNode1 = CreateListNode(1);    ListNode* pNode3 = CreateListNode(3);    ListNode* pNode5 = CreateListNode(5);    ConnectListNodes(pNode1, pNode3);    ConnectListNodes(pNode3, pNode5);    ListNode* pMergedHead = Test("Test4", pNode1, NULL);    DestroyList(pMergedHead);}// 两个链表都为空链表// list1: 空链表// list2: 空链表void Test5(){    ListNode* pMergedHead = Test("Test5", NULL, NULL);}int main(int argc, char* argv[]){    Test1();    Test2();    Test3();    Test4();    Test5();    return 0;}

0 0
原创粉丝点击