Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if(l1 != NULL && l2 != NULL) { ListNode *p = l1; ListNode *q = l2; ListNode *t, *h;//t为新链表的连接指针,h为新链表的头指针 if(p->val > q->val) { t = q; h = q; q = q->next; } else { t = p; h = p; p = p->next; } while(p != NULL && q != NULL) { if(p->val > q->val) { t->next = q; t = t->next; q = q->next; } else { t->next = p; t = t->next; p = p->next; } } while(p != NULL && q == NULL) { t->next = p; p = p->next; t = t->next; } while(p == NULL && q != NULL) { t->next = q; q = q->next; t = t->next; } while(p == NULL && q == NULL) { return h; } } if(l1 == NULL && l2 != NULL) { return l2; } if(l1 != NULL && l2 == NULL) { return l1; } if(l1 == NULL && l2 == NULL) { return NULL; } } }; |
❤ 点击这里 -> 订阅《PAT | 蓝桥 | LeetCode学习路径 & 刷题经验》by 柳婼