leetcode有序单链表合并

来源:互联网 发布:编程社区论坛 编辑:程序博客网 时间:2024/06/10 09:22
<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;}




0 0
原创粉丝点击