合并两个递增的列表
来源:互联网 发布:淘宝怎么用余额宝分期 编辑:程序博客网 时间: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
- 合并两个递增的列表
- 合并两个递增的单链表代码
- 合并两个递增排序的链表
- 合并两个递增的链表
- 合并两个递增的链表
- 合并两个排序的列表
- 合并两个递增链表
- 合并两个已经按递增排序的文件
- 链表合并 求两个递增链表的并
- 数据结构杂记——两个递增有序的单链表合并
- Python合并两个列表的方法
- 将两个递增的有序链表合并为一个递增的有序链表
- 【面试题】剑指offer17--合并两个递增的链表,结果还是递增
- 合并两个有序列表
- 合并两个排序列表
- Python -- 合并两个列表
- python两个列表合并
- 合并两个有序列表
- linux下安装apache 及报错解答
- win32(十五)
- K&C 式样的函数定义
- mac下192.168.2.1引起的连接问题
- Ztree 相关.
- 合并两个递增的列表
- opencv 图片读写,截取,复制,标记
- 《算法导论》的基数排序 C++实现
- Linux centOS下修复“运行aclocal失败:没有该文件或目录”
- 《HTTP权威指南》阅读笔记(七)
- 最长上升子序列、最长下降子序列的DP算法由O(n^2)到O(nlogn)算法
- php/mysql实现搜索功能
- Html5拖放小例
- 过去是行不通的