合并两个排序的链表

题目

输入两个递增排序的链表,合并这两个链表并使新链表中的节点人是按照递增排序的。

思路

两个链表分别都已经是有序的了,遍历链表的时候只要比较两个链表当前位置大小,取出最小的添加到新链表中。

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
public:
    ListNode* Merge(ListNode* head1, ListNode* head2)
    {
        if(head1==nullptr&&head2==nullptr)
            return nullptr;
        else if(head1==nullptr&&head2)
            return head2;
        else if(head1&&head2==nullptr)
            return head1;
        
        ListNode *h1=head1;
        ListNode *h2=head2;
        ListNode *newHead=new ListNode(-1);
        ListNode *h3=newHead;
        while(h1&&h2)
        {
            if(h1->val<=h2->val)
            {
                h3->next=h1;
                h3=h3->next;
                h1=h1->next;
            }
            else
            {
                h3->next=h2;
                h3=h3->next;
                h2=h2->next;
            }
        }
        if(h1)
            h3->next=h1;
        else if(h2)
            h3->next=h2;
        return newHead->next;
    }
};
原文地址:https://www.cnblogs.com/tianzeng/p/10179715.html