1 /**
2 * Definition for singly-linked list.
3 * struct ListNode {
4 * int val;
5 * ListNode *next;
6 * ListNode(int x) : val(x), next(NULL) {}
7 * };
8 */
9 class Solution {
10 public:
11 ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
12 ListNode *l3 = NULL;//头指针
13 ListNode *p = l3;
14 // if(l1 == NULL && l2 == NULL)
15 // return NULL;
16 // else if
17 // return (l1 == NULL)?l1::l2;
18 if(l1 == NULL) return l2;
19 if(l2 == NULL) return l1;
20 while(l1&&l2)
21 {
22 if(l3 == NULL)
23 {
24 if(l1->val <= l2->val)
25 {
26 l3 = l1;
27 l1 = l1->next;
28 l3->next = NULL;
29 p = l3;
30 }
31 else if(l2->val <= l1->val)
32 {
33 l3=l2;
34 l2 = l2->next;
35 l3->next = NULL;
36 p = l3;
37 }
38 }
39 else
40 {
41 if(l1->val <= l2->val)
42 {
43 p->next = l1;
44 p = l1;
45 l1 = l1->next;
46 p->next = NULL;
47 }
48 else if(l2->val <= l1->val)
49 {
50 p->next = l2;
51 p = l2;
52 l2 = l2->next;
53 p->next = NULL;
54 }
55 }
56 }
57 if(l1) p->next = l1;
58 if(l2) p->next = l2;
59 return l3;
60 }
61 };