• # JZ-C-17

剑指offer第十七题：合并两个排序的链表

```  1 //============================================================================
2 // Name        : JZ-C-17.cpp
3 // Author      : Laughing_Lz
4 // Version     :
5 // Copyright   : All Right Reserved
6 // Description :合并两个排序的链表
7 //============================================================================
8
9 #include <iostream>
10 #include <stdio.h>
11 #include "List.h"
12 using namespace std;
14     if (pHead == NULL) { //考虑某链表为空的情况
16     } else if (qHead == NULL) {
18     }
23     } else { //包含了相等的情况
26     }
28 }
29
30 // ====================测试代码====================
32     if (testName != NULL)
33         printf("%s begins:
", testName);
34
35     printf("The first list is:
");
37
38     printf("The second list is:
");
40
41     printf("The merged list is:
");
44
45     printf("

");
46
48 }
49
50 // list1: 1->3->5
51 // list2: 2->4->6
52 void Test1() {
53     ListNode* pNode1 = CreateListNode(1);
54     ListNode* pNode3 = CreateListNode(3);
55     ListNode* pNode5 = CreateListNode(5);
56
57     ConnectListNodes(pNode1, pNode3);
58     ConnectListNodes(pNode3, pNode5);
59
60     ListNode* pNode2 = CreateListNode(2);
61     ListNode* pNode4 = CreateListNode(4);
62     ListNode* pNode6 = CreateListNode(6);
63
64     ConnectListNodes(pNode2, pNode4);
65     ConnectListNodes(pNode4, pNode6);
66
67     ListNode* pMergedHead = Test("Test1", pNode1, pNode2);
68
70 }
71
72 // 两个链表中有重复的数字
73 // list1: 1->3->5
74 // list2: 1->3->5
75 void Test2() {
76     ListNode* pNode1 = CreateListNode(1);
77     ListNode* pNode3 = CreateListNode(3);
78     ListNode* pNode5 = CreateListNode(5);
79
80     ConnectListNodes(pNode1, pNode3);
81     ConnectListNodes(pNode3, pNode5);
82
83     ListNode* pNode2 = CreateListNode(1);
84     ListNode* pNode4 = CreateListNode(3);
85     ListNode* pNode6 = CreateListNode(5);
86
87     ConnectListNodes(pNode2, pNode4);
88     ConnectListNodes(pNode4, pNode6);
89
90     ListNode* pMergedHead = Test("Test2", pNode1, pNode2);
91
93 }
94
95 // 两个链表都只有一个数字
96 // list1: 1
97 // list2: 2
98 void Test3() {
99     ListNode* pNode1 = CreateListNode(1);
100     ListNode* pNode2 = CreateListNode(2);
101
102     ListNode* pMergedHead = Test("Test3", pNode1, pNode2);
103
105 }
106
107 // 一个链表为空链表
108 // list1: 1->3->5
109 // list2: 空链表
110 void Test4() {
111     ListNode* pNode1 = CreateListNode(1);
112     ListNode* pNode3 = CreateListNode(3);
113     ListNode* pNode5 = CreateListNode(5);
114
115     ConnectListNodes(pNode1, pNode3);
116     ConnectListNodes(pNode3, pNode5);
117
118     ListNode* pMergedHead = Test("Test4", pNode1, NULL);
119
121 }
122
123 // 两个链表都为空链表
124 // list1: 空链表
125 // list2: 空链表
126 void Test5() {
127     ListNode* pMergedHead = Test("Test5", NULL, NULL);
128 }
129
130 int main(int argc, char** argv) {
131     Test1();
132     Test2();
133     Test3();
134     Test4();
135     Test5();
136
137     return 0;
138 }```
• 相关阅读:
天梯赛5-12 愿天下有情人都是失散多年的兄妹 【dfs】
poj2718 Smallest Difference【贪心】
HDU problem 5635 LCP Array【思维】
codeforces 782C Andryusha and Colored Balloons【构造】
HDU 4278 Faulty Odometer【进制转换】
codeforces B. The Meeting Place Cannot Be Changed【二分】
POJ 3264 Balanced Lineup 【线段树】
HDU 1850
CodeForces-714C
HDU Problem 1247 Hat's Words 【字典树】
• 原文地址：https://www.cnblogs.com/Laughing-Lz/p/5567312.html