1
+ #include < stdio.h>
2
+ #include < stdlib.h>
3
+
4
+ struct Node
5
+ {
6
+ int val;
7
+ Node *next;
8
+ Node (int v) : val(v) { next = NULL ; }
9
+ };
10
+
11
+ Node* Merge (Node *head1, Node *head2)
12
+ {
13
+ if (head1 == NULL ) return head2;
14
+ if (head2 == NULL ) return head1;
15
+
16
+ Node *head = NULL ;
17
+ Node *pre = NULL ;
18
+ Node *p1 = head1;
19
+ Node *p2 = head2;
20
+ if (p1->val > p2->val )
21
+ {
22
+ head = p2;
23
+ pre = p2;
24
+ p2 = p2->next ;
25
+ }
26
+ else
27
+ {
28
+ head = p1;
29
+ pre = p1;
30
+ p1 = p1->next ;
31
+ }
32
+
33
+ while (NULL != p1 && NULL != p2)
34
+ {
35
+ if (p1->val > p2->val )
36
+ {
37
+ pre->next = p2;
38
+ pre = p2;
39
+ p2 = p2->next ;
40
+ }
41
+ else
42
+ {
43
+ pre->next = p1;
44
+ pre = p1;
45
+ p1 = p1->next ;
46
+ }
47
+ }
48
+
49
+ if (NULL != p1) pre->next = p1;
50
+ if (NULL != p2) pre->next = p2;
51
+
52
+ return head;
53
+ }
54
+
55
+ void PrintList (Node *head)
56
+ {
57
+ Node *p = head;
58
+ while (NULL != p)
59
+ {
60
+ printf (" %d " , p->val );
61
+ p = p->next ;
62
+ }
63
+ }
64
+ int main () {
65
+ Node *node1_1 = new Node (1 );
66
+ Node *node1_2 = new Node (2 );
67
+ Node *node1_3 = new Node (3 );
68
+ Node *node1_4 = new Node (4 );
69
+ Node *node1_5 = new Node (5 );
70
+
71
+ Node *node2_1 = new Node (0 );
72
+ Node *node2_2 = new Node (3 );
73
+ Node *node2_3 = new Node (4 );
74
+ Node *node2_4 = new Node (7 );
75
+ Node *node2_5 = new Node (10 );
76
+
77
+ node1_1->next = node1_2;
78
+ node1_2->next = node1_3;
79
+ node1_3->next = node1_4;
80
+ node1_4->next = node1_5;
81
+
82
+ node2_1->next = node2_2;
83
+ node2_2->next = node2_3;
84
+ node2_3->next = node2_4;
85
+ node2_4->next = node2_5;
86
+
87
+ Node *head1 = node1_1;
88
+ Node *head2 = node2_1;
89
+ Node *head = Merge (head1, head2);
90
+ PrintList (head);
91
+
92
+ return 0 ;
93
+ }
0 commit comments