//********************************************************************
//** 创建人: larriers
//** 日 期 : 2016 / 03 / 22 21:41
//** 版 本 : 1.0
//** 描 述 : 合并两个有序链表
//** 思 路 : 1. 将两个有序链表进行合并
//** 2. 注意新链表首地址的初始化
//** 3. 注意考虑某一个链表为空的情况
//** 测 试 :
//** 应 用 : 对链表的操作
//**************************** 修改记录 ******************************
//** 修改人 :
//** 日 期 :
//** 描 述 :
//********************************************************************
#include <iostream>
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* mergeTwoSortedLists(ListNode* l1, ListNode* l2) {
ListNode *newHead = nullptr;
ListNode *newTemp = nullptr;
/*ListNode *indexL1 = l1;
ListNode *indexL2 = l2;*/
if (l1!=nullptr&&l2!=nullptr)
{
if (l1->val<l2->val)
{
newHead = l1;
l1 = l1->next;
newTemp = newHead;
}
else
{
newHead = l2;
l2 = l2->next;
newTemp = newHead;
}
}
else if (l1 != nullptr&&l2 == nullptr)
{
newHead = l1;
l1 = l1->next;
newTemp = newHead;
}
else if (l1 == nullptr&&l2 != nullptr)
{
newHead = l2;
l2 = l2->next;
newTemp = newHead;
}
while (l1!=nullptr&&l2!=nullptr)
{
if (l1->val<l2->val)
{
newTemp->next = l1;
l1 = l1->next;
newTemp = newTemp->next;
}
else
{
newTemp->next = l2;
l2 = l2->next;
newTemp = newTemp->next;
}
}
while (l1!=nullptr)
{
newTemp->next = l1;
l1 = l1->next;
newTemp = newTemp->next;
}
while (l2 != nullptr)
{
newTemp->next = l2;
l2 = l2->next;
newTemp = newTemp->next;
}
return newHead;
}