21.合并两个有序链表

一、思路

二、源码


21.合并两个有序链表_第1张图片

一、思路

创建一个新链表

两个链表比较,小于等于取下来尾插

循环结束条件为任意一个链表为空

最后将之剩下的链表直接尾插

二、源码


struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){
    if(list1 == NULL)
        return list2;
    if(list2 == NULL)
        return list1;
    struct ListNode *head = NULL,*tail = NULL;
    while(list1 && list2)
    {
        if(list1->val <= list2->val)
        {
            if(head == NULL)
            {
                head = tail = list1;
            }
            else
            {
                tail->next = list1;
                tail = tail->next;

            }
            list1 = list1->next;
        }
        else
        {
            if(head == NULL)
            {
                head = tail = list2;
            }
            else
            {
                tail->next = list2;
                tail = tail->next;
            }
            list2 = list2->next;
        }
    }
    if(list1)
        tail->next = list1;
    if(list2)
        tail->next = list2;
    return head;
}

你可能感兴趣的:(链表,java,数据结构)