<span style="font-size:14px;">leetcode有序单链表合并</span>
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {
if(l1==NULL&&l2==NULL)
return l1;
if(l1&&!l2)
return l1;
if(l2&&!l1)
return l2;
struct ListNode *next2;
//对链表二的每个节点进行遍历,并将其合并到第一个链表上,所以节点可能存在的位置有三种
//插在第一个链表的头结点前、中间位置、表尾分别对这三种情况进行处理即可
//头结点前
if(l1->val>l2->val)
{
next2=l2->next;
l2->next=l1;
l1=l2;
l2=next2;
}
struct ListNode *head=l1;
while(l1&&l2)
{
if(l1->val<=l2->val)
{
//表尾
if(l1->next==NULL)
{
l1->next=l2;
break;
}
//中间
if(l1->next->val>l2->val)
{
next2=l2->next;
l2->next=l1->next;
l1->next=l2;
l2=next2;
}
l1=l1->next;
}
}
return head;
}
leetcode有序单链表合并
最新推荐文章于 2024-04-21 23:42:54 发布