LeetCode:Merge Two Sorted Lists
Title:
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.
https://leetcode.com/problems/merge-two-sorted-lists/
非递归:
class Solution{ public: ListNode* mergeTwoLists(ListNode* l1,ListNode* l2){ ListNode * head = new ListNode(0); ListNode* p1 = l1; ListNode* p2 = l2; ListNode* p = head; while (p1 != NULL && p2 != NULL){ if (p1->val < p2->val){ p->next = p1; p1 = p1->next; }else{ p->next = p2; p2 = p2->next; } p = p->next; } if (p1 != NULL) p->next = p1; if (p2 != NULL) p->next = p2; ListNode* ret = head->next; delete head; return ret; } };
递归:
/** * 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) return l2; if (l2 == NULL) return l1; ListNode* head = NULL; if (l1->val < l2->val){ head = l1; head->next = mergeTwoLists(l1->next,l2); }else{ head = l2; head->next = mergeTwoLists(l1,l2->next); } return head; } };