题目要求:
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
过程:
第一步:
比较两个链表的头指针对应的数据大小,将数值较小的头指针指向的地址赋值给结构体变量head和tail,同时头指针指向其指向的下一个地址。
第二步:
代码实现:
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){
struct ListNode* head = NULL;
struct ListNode* tail = NULL;
//判断两个链表是否为空
if(l1 == NULL)
{
return l2;
}
if(l2 == NULL)
{
return l1;
}
//比较两个链表的头指针对应的数据大小
//将数值较小的头指针指向的地址赋值给结构体变量head和tail,同时头指针指向其指向的下一个地址。
if((l1->val) < (l2->val))
{
head = tail = l1;
l1 = l1->next;
}
else
{
head = tail = l2;
l2 = l2->next;
}
while(l1 && l2)
{
if((l1->val) < (l2->val))
{
tail->next = l1;
l1 = l1->next;
}
else
{
tail->next = l2;
l2 = l2->next;
}
tail = tail->next;
}
if(l1!=NULL)
{
tail->next = l1;
}
else
{
tail->next = l2;
}
return head;
}