您的位置:首页 > 其它

合并两个排序链表-LintCode

2017-08-16 16:56 316 查看
将两个排序链表合并为一个新的排序链表

样例

给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。

#ifndef C165_H
#define C165_H
#include<iostream>
using namespace std;
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
if (l1 == NULL)
return l2;
if (l2 == NULL)
return l1;
ListNode *p1 = l1, *p2 = l2;
ListNode *lst = new ListNode(-1);
ListNode *q = lst;
while (p1 != NULL||p2 != NULL)
{
if (p1 != NULL&&p2 != NULL)
{
if (p1->val < p2->val)
{
q->next = p1;
p1 = p1->next;
q = q->next;
}
else
{
q->next = p2;
p2 = p2->next;
q = q->next;
}
}
else if (p1 == NULL&&p2 != NULL)
{
q->next = p2;
p2 = p2->next;
q = q->next;
}
else if (p1 != NULL&&p2 == NULL)
{
q->next = p1;
p1 = p1->next;
q = q->next;
}
}
return lst->next;
}
};
#endif
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: