#include <iostream> //提交时只需要将关键的源码部分提交即可
using namespace std;
struct ListNode
{
int val;
ListNode* next;
};
class Solution
{
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2)
{
if (l1 == NULL)return l2; //判断传递的链表是否为空,注意传递进来的参数是指针,函数也是指针函数,因此返回的就是一个地址,读取时读取的时该链表的第一个元素
if (l2 == NULL)return l1;
if (!l1 && !l2)return NULL;
ListNode* l3 = new ListNode;
ListNode* first = l3;
while (l1 && l2)
{
if (l1->val < l2->val)
{
l3 -> next = l1;
l1 = l1->next;
}
else
{
l3->next = l2;
l2 = l2->next;
}
l3 = l3->next; //注意要及时更新新建指针的地址
}
if(l1) //当有一个链表为空时,将新建链表l3的地址接入未空链表即可
{
l3->next = l1;
}
else if(l2)
{
l2->next = l2;
}
//此处也可以写成l3->next=l1?l1:l2;
return first->next; //由于l3已在表尾,故要定义一个指针在最初存入l3的地址
}
};
21.合并两个单链表
于 2021-05-23 12:04:57 首次发布