题目如下:
思路:创建一个新链表,各自从头开始遍历两个旧链表,将较小的一个插入到新链表中。
这里是代码:
typedef struct ListNode ListNode;
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {
if (list1 == NULL)
return list2;
if (list2 == NULL)
return list1;
ListNode* l1, * l2;
l1 = list1, l2 = list2;
ListNode* newHead, * newTail;
newHead = newTail = NULL;
while (l1 && l2)
{
//l1小,插入到新链表中
if (l1->val < l2->val)
{
//链表为空,头尾指针都指向该节点
if (newHead == NULL)
{
newHead = newTail = l1;
}
//链表不为空
else
{
newTail->next = l1;
newTail = newTail->next;
}
l1 = l1->next;
}
//l2小,插入到新链表中
else
{
//链表为空,头尾指针都指向该节点
if (newHead == NULL)
{
newHead = newTail = l2;
}
//链表不为空
else
{
newTail->next = l2;
newTail = newTail->next;
}
l2 = l2->next;
}
}
if (l1)
{
newTail->next = l1;
}
if (l2)
{
newTail->next = l2;
}
return newHead;
}
希望我的博客可以帮到你,如果有什么问题或者建议欢迎在评论区讨论,谢谢支持~