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