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