165. 合并两个排序链表
将两个排序链表合并为一个新的排序链表
您在真实的面试中是否遇到过这个题?
Yes
样例
给出 1->3->8->11->15->null
,2->null
, 返回 1->2->3->8->11->15->null
。
标签
/** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *next; * ListNode(int val) { * this->val = val; * this->next = NULL; * } * } */ class Solution { public: /* * @param l1: ListNode l1 is the head of the linked list * @param l2: ListNode l2 is the head of the linked list * @return: ListNode head of linked list */ ListNode * mergeTwoLists(ListNode * l1, ListNode * l2) { // write your code here ListNode *pnew, *phead = l1; if (l1 == NULL) { return l2; } else if (l2 == NULL) { return l1; } else { if (l1->val <= l2->val) { phead = pnew = l1; l1 = l1->next; } else { phead = pnew = l2; l2 = l2->next; } while (l1 != NULL && l2 != NULL) { if (l1->val <= l2->val) { pnew->next = l1; l1 = l1->next; pnew = pnew->next; } else { pnew->next = l2; l2 = l2->next; pnew = pnew->next; } } if (l1 != NULL && l2 == NULL) { pnew->next = l1; } if (l2 != NULL && l1 == NULL) { pnew->next = l2; } return phead; } } };