(leetcode)Merge Two Sorted Lists

 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 };

 

posted @ 2015-06-15 14:10  sunalive  Views(137)  Comments(0)    收藏  举报