LintCode-165.合并两个排序链表
合并两个排序链表
将两个排序链表合并为一个新的排序链表
样例
给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。
标签
领英 链表
code
/**
* Definition of ListNode
* class ListNode {
* public:
* int val;
* ListNode *next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param ListNode l1 is the head of the linked list
* @param 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;
}
}
};