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 && l2NULL) {
pnew->next = l1;
}
if(l2!=NULL && l1
NULL) {
pnew->next = l2;
}
return phead;
}
}
};

posted @ 2017-05-04 14:20  LiBaoquan  阅读(534)  评论(0)    收藏  举报