Skip to content

Commit c875829

Browse files
author
fengxiaole
committed
合并两个有序的单链表,LeetCode-21
1 parent a8530ea commit c875829

File tree

1 file changed

+93
-0
lines changed

1 file changed

+93
-0
lines changed
+93
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
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

Comments
 (0)