leetcode【链表】-----21. Merge Two Sorted Lists(合并两个有序链表)

1、题目描述

2、分析

        输入两个有序链表,合并链表,合并之后依旧是有序的。我们只需要创建一个新节点,然后比较按顺序比较两个链表的值,将小的插入到新节点之后,然后移动指针。如果有一个链表结束,把另一个插入到指针之后。

3、代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
        if(l1==NULL) return l2;
        if(l2==NULL) return l1;
        ListNode* NewNode=new ListNode(0);
        ListNode* cur=NewNode;
        while(l1&&l2){
            if(l1->val<=l2->val){
                cur->next=l1;
                l1=l1->next;
            }
            else{
                cur->next=l2;
                l2=l2->next;
            }
            cur=cur->next;
        }
        if(l1==NULL) cur->next=l2;
        if(l2==NULL) cur->next=l1;
        return NewNode->next;
        
    }
};

4、相关知识点

        链表通常操作中需要新建一个节点,使用新节点来进行操作。

posted @ 2019-04-10 18:55  吾之求索  阅读(124)  评论(0)    收藏  举报